{"id":3750,"name":"trio","ecosystem":"pip","repository_url":"https://github.com/python-trio/trio","issues_count":76,"created_at":"2025-06-06T16:30:14.310Z","updated_at":"2025-06-06T16:30:14.310Z","purl":"pkg:pypi/trio","metadata":{"id":2953771,"name":"trio","ecosystem":"pypi","description":"A friendly Python library for async concurrency and I/O","homepage":"https://github.com/python-trio/trio","licenses":"other","normalized_licenses":["GPL-1.0+"],"repository_url":"https://github.com/python-trio/trio","keywords_array":["async","io","networking","trio"],"namespace":null,"versions_count":40,"first_release_published_at":"2017-01-14T00:27:42.000Z","latest_release_published_at":"2025-04-21T00:48:17.000Z","latest_release_number":"0.30.0","last_synced_at":"2025-06-06T17:41:08.579Z","created_at":"2022-04-10T12:53:57.106Z","updated_at":"2025-06-06T17:41:08.580Z","registry_url":"https://pypi.org/project/trio/","install_command":"pip install trio --index-url https://pypi.org/simple","documentation_url":"https://trio.readthedocs.io/","metadata":{"funding":null,"documentation":"https://trio.readthedocs.io/","classifiers":["Development Status :: 4 - Beta","Framework :: Trio","Intended Audience :: Developers","Operating System :: MacOS :: MacOS X","Operating System :: Microsoft :: Windows","Operating System :: POSIX :: BSD","Operating System :: POSIX :: Linux","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.9","Programming Language :: Python :: Implementation :: CPython","Programming Language :: Python :: Implementation :: PyPy","Topic :: System :: Networking","Typing :: Typed"],"normalized_name":"trio"},"repo_metadata":{"id":37396721,"uuid":"79083614","full_name":"python-trio/trio","owner":"python-trio","description":"Trio – a friendly Python library for async concurrency and I/O","archived":false,"fork":false,"pushed_at":"2024-04-13T04:12:44.000Z","size":8709,"stargazers_count":5858,"open_issues_count":317,"forks_count":318,"subscribers_count":83,"default_branch":"master","last_synced_at":"2024-04-14T09:04:51.076Z","etag":null,"topics":["async","async-await","io","networking","python","structured-concurrency","trio"],"latest_commit_sha":null,"homepage":"https://trio.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/python-trio.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null},"funding":{"github":"python-trio","open_collective":"python-trio"}},"created_at":"2017-01-16T04:45:25.000Z","updated_at":"2024-04-15T12:24:34.314Z","dependencies_parsed_at":"2023-12-10T16:03:50.016Z","dependency_job_id":"e16da566-7c7b-479e-903f-94741494bc2a","html_url":"https://github.com/python-trio/trio","commit_stats":{"total_commits":3900,"total_committers":168,"mean_commits":"23.214285714285715","dds":0.6638461538461539,"last_synced_commit":"e87dc4629593c083bf7d5a091aaa9118387804c8"},"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/python-trio","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":215650788,"owners_count":15910799,"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":"python-trio","name":"python-trio","uuid":"26335827","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/26335827?v=4","repositories_count":32,"last_synced_at":"2024-04-15T00:21:03.150Z","metadata":{"has_sponsors_listing":true,"funding":{"github":"python-trio","open_collective":"python-trio"}},"html_url":"https://github.com/python-trio","funding_links":["https://github.com/sponsors/python-trio","https://opencollective.com/python-trio"],"total_stars":7745,"followers":76,"following":0,"created_at":"2022-11-02T16:28:53.742Z","updated_at":"2024-04-15T00:21:06.370Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/python-trio","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/python-trio/repositories"},"tags":[{"name":"v0.25.0","sha":"0b8d3e2435ca9cb00a1aab72bf98da334dec2b1c","kind":"commit","published_at":"2024-03-17T02:37:49.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.25.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.25.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.25.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.25.0/manifests"},{"name":"v0.24.0","sha":"b9851229f095ea4aa38c470b425c1a5341fe512f","kind":"commit","published_at":"2024-01-10T03:07:05.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.24.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.24.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.24.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.24.0/manifests"},{"name":"v0.23.2","sha":"60172de0c37a0d87c341cef3ef13f565ace343e9","kind":"commit","published_at":"2023-12-14T02:43:09.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.23.2","html_url":"https://github.com/python-trio/trio/releases/tag/v0.23.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.23.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.23.2/manifests"},{"name":"v0.23.1","sha":"fa94d4cc1bf1a1619a09268cb06364a17bc6edbb","kind":"commit","published_at":"2023-11-04T04:52:05.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.23.1","html_url":"https://github.com/python-trio/trio/releases/tag/v0.23.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.23.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.23.1/manifests"},{"name":"v0.23.0","sha":"eef24cb9787aa8f4f1707b4889ccd2a71419e3ce","kind":"commit","published_at":"2023-11-03T04:57:51.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.23.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.23.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.23.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.23.0/manifests"},{"name":"v0.22.2","sha":"8741c58def83defc84ab2734f95f2f8d51c21920","kind":"commit","published_at":"2023-07-12T22:50:51.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.22.2","html_url":"https://github.com/python-trio/trio/releases/tag/v0.22.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.22.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.22.2/manifests"},{"name":"v0.22.1","sha":"c7e897d5d569f4edc5602edd515a7fb9ccdcabe9","kind":"commit","published_at":"2023-07-02T02:27:55.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.22.1","html_url":"https://github.com/python-trio/trio/releases/tag/v0.22.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.22.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.22.1/manifests"},{"name":"v0.22.0","sha":"87ea87018da2085180138bd952abcac67961be62","kind":"commit","published_at":"2022-09-28T06:04:13.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.22.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.22.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.22.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.22.0/manifests"},{"name":"v0.21.0","sha":"077e8fc3f1634b42ef5024814898439d8a8430d4","kind":"commit","published_at":"2022-06-07T18:15:26.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.21.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.21.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.21.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.21.0/manifests"},{"name":"v0.20.0","sha":"6947901ef0da402d83d967a01351df3df95e6a00","kind":"commit","published_at":"2022-02-21T12:35:55.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.20.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.20.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.20.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.20.0/manifests"},{"name":"v0.19.0","sha":"0cb25fae4248263dd14bc84586207bfc7ec776dc","kind":"commit","published_at":"2021-06-15T09:24:53.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.19.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.19.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.19.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.19.0/manifests"},{"name":"v0.18.0","sha":"069bdd03cafdf3824c81ddf8fddc8c1359bf1ee1","kind":"commit","published_at":"2021-01-11T06:31:18.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.18.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.18.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.18.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.18.0/manifests"},{"name":"v0.17.0","sha":"d0362a1a0c1d765f2e2f0e3db22df7ffe5d4380d","kind":"commit","published_at":"2020-09-15T10:55:02.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.17.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.17.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.17.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.17.0/manifests"},{"name":"v0.16.0","sha":"7ef6f09f79ec3ce3ba8c3658cfa79457c55952ed","kind":"commit","published_at":"2020-06-10T05:18:35.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.16.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.16.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.16.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.16.0/manifests"},{"name":"v0.15.1","sha":"9f4b571141c15a41860e09570865fd7a041a4e5d","kind":"commit","published_at":"2020-05-22T08:07:19.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.15.1","html_url":"https://github.com/python-trio/trio/releases/tag/v0.15.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.15.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.15.1/manifests"},{"name":"v0.15.0","sha":"84d550d21ea59e54b0ae60676e53b9f1ff92fc8e","kind":"commit","published_at":"2020-05-19T05:16:28.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.15.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.15.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.15.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.15.0/manifests"},{"name":"v0.14.0","sha":"7fa11bdbcfee1c65d0bff590337ed4355ebbe44b","kind":"commit","published_at":"2020-04-27T12:00:51.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.14.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.14.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.14.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.14.0/manifests"},{"name":"v0.13.0","sha":"d47e018d84862eecd9a896bf127159436a473494","kind":"commit","published_at":"2019-11-02T20:31:38.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.13.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.13.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.13.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.13.0/manifests"},{"name":"v0.12.1","sha":"70b1df9b006d5fee134076e4c8b085c0814aa111","kind":"commit","published_at":"2019-08-01T07:51:09.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.12.1","html_url":"https://github.com/python-trio/trio/releases/tag/v0.12.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.12.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.12.1/manifests"},{"name":"v0.12.0","sha":"27e211402b4780888e4e1d297244ef04908932c1","kind":"commit","published_at":"2019-08-01T04:12:18.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.12.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.12.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.12.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.12.0/manifests"},{"name":"v0.11.0","sha":"ff0ede5d79902e1c886e8804f6d9a74b42f031c4","kind":"commit","published_at":"2019-02-09T20:23:52.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.11.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.11.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.11.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.11.0/manifests"},{"name":"v0.10.0","sha":"79dc7af4ad3d00031ea45968294a5ed3b61d9994","kind":"commit","published_at":"2019-01-07T19:17:28.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.10.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.10.0/manifests"},{"name":"v0.9.0","sha":"82c01f59ba0e8a960f7da9371ea7b5d40b1ea7d5","kind":"commit","published_at":"2018-10-12T16:35:41.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.9.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.9.0/manifests"},{"name":"v0.8.0","sha":"45a8ed317124ac94af65804f3162483cb3ba0a7d","kind":"commit","published_at":"2018-10-01T01:21:00.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.8.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.8.0/manifests"},{"name":"v0.7.0","sha":"44b689b4e767b7e10240dcbcb7b6dc84dd7ea4ed","kind":"commit","published_at":"2018-09-03T16:50:40.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.7.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.7.0/manifests"},{"name":"v0.6.0","sha":"fa219b7e8af7db13fbea800adddf8ef6a31b9e8f","kind":"commit","published_at":"2018-08-13T12:36:50.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.6.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.6.0/manifests"},{"name":"v0.5.0","sha":"1c7e2686f96dca1b4844bbc81d5de9bf06a8c421","kind":"commit","published_at":"2018-07-20T09:58:45.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.5.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.5.0/manifests"},{"name":"v0.4.0","sha":"bada322529801a853fe6f45a8870ca005ec41554","kind":"commit","published_at":"2018-04-14T09:40:20.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.4.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.4.0/manifests"},{"name":"v0.3.0","sha":"5d8fc470563fad959ffced897e8320d997993f4d","kind":"commit","published_at":"2017-12-28T01:27:42.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.3.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.3.0/manifests"},{"name":"v0.2.0","sha":"36f3a37bb236356bf3ba45764df389a0e24e3933","kind":"commit","published_at":"2017-12-06T11:27:42.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.2.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.2.0/manifests"},{"name":"v0.1.0","sha":"776178a8f8b9ec995dd8b25a5c12bf2f005027ab","kind":"commit","published_at":"2017-03-11T00:29:44.000Z","download_url":"https://codeload.github.com/python-trio/trio/tar.gz/v0.1.0","html_url":"https://github.com/python-trio/trio/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-trio%2Ftrio/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2024-09-07T05:40:35.378Z","dependent_packages_count":229,"downloads":22844096,"downloads_period":"last-month","dependent_repos_count":7679,"rankings":{"downloads":0.07318321298149143,"dependent_repos_count":0.10308011452530874,"dependent_packages_count":0.11628610784527713,"stargazers_count":0.776952606991473,"forks_count":3.883479118940145,"docker_downloads_count":0.3360191633636399,"average":0.8815000541078892},"purl":"pkg:pypi/trio","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/trio","docker_dependents_count":763,"docker_downloads_count":217320064,"usage_url":"https://repos.ecosyste.ms/usage/pypi/trio","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/trio/dependencies","status":null,"funding_links":["https://github.com/sponsors/python-trio","https://opencollective.com/python-trio"],"critical":true,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/trio/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/trio/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/trio/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/trio/related_packages","maintainers":[{"uuid":"The Trio Collective","login":"The Trio Collective","name":null,"email":null,"url":null,"packages_count":14,"html_url":"https://pypi.org/user/The Trio Collective/","role":null,"created_at":"2023-09-07T07:36:17.152Z","updated_at":"2023-09-07T07:36:17.152Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/The%20Trio%20Collective/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":50,"unique_repositories_count_past_30_days":1,"recent_issues":[{"uuid":"4513302201","node_id":"PR_kwDOO5U75M7e251q","number":113,"state":"open","title":"chore(deps-dev)(deps-dev): bump the x402-a2a-dev group in /python/x402_a2a with 4 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-24T23:32:22.000Z","updated_at":"2026-05-24T23:32:22.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)(deps-dev): bump","group_name":"x402-a2a-dev","update_count":4,"packages":[{"name":"pytest-mock","old_version":"3.14.1","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"trio","old_version":"0.30.0","new_version":"0.33.0","repository_url":"https://github.com/python-trio/trio"},{"name":"ruff","old_version":"0.13.1","new_version":"0.15.13","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mypy","old_version":"1.18.2","new_version":"1.20.2","repository_url":"https://github.com/python/mypy"}],"path":"/python/x402_a2a","ecosystem":"pip"},"body":"Bumps the x402-a2a-dev group in /python/x402_a2a with 4 updates: [pytest-mock](https://github.com/pytest-dev/pytest-mock), [trio](https://github.com/python-trio/trio), [ruff](https://github.com/astral-sh/ruff) and [mypy](https://github.com/python/mypy).\n\nUpdates `pytest-mock` from 3.14.1 to 3.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-mock/releases\"\u003epytest-mock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.15.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-09-16\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/529\"\u003e#529\u003c/a\u003e: Fixed \u003ccode\u003eitertools._tee object has no attribute error\u003c/code\u003e -- now \u003ccode\u003eduplicate_iterators=True\u003c/code\u003e must be passed to \u003ccode\u003emocker.spy\u003c/code\u003e to duplicate iterators.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.15.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-09-04\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.8 (EOL) is no longer supported.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/pull/524\"\u003e#524\u003c/a\u003e: Added \u003ccode\u003espy_return_iter\u003c/code\u003e to \u003ccode\u003emocker.spy\u003c/code\u003e, which contains a duplicate of the return value of the spied method if it is an \u003ccode\u003eIterator\u003c/code\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/pytest-dev/pytest-mock/blob/main/CHANGELOG.rst\"\u003epytest-mock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.15.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-09-16\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#529](https://github.com/pytest-dev/pytest-mock/issues/529) \u0026lt;https://github.com/pytest-dev/pytest-mock/issues/529\u0026gt;\u003c/code\u003e_: Fixed \u003ccode\u003eitertools._tee object has no attribute error\u003c/code\u003e -- now \u003ccode\u003eduplicate_iterators=True\u003c/code\u003e must be passed to \u003ccode\u003emocker.spy\u003c/code\u003e to duplicate iterators.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.15.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-09-04\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.8 (EOL) is no longer supported.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#524](https://github.com/pytest-dev/pytest-mock/issues/524) \u0026lt;https://github.com/pytest-dev/pytest-mock/pull/524\u0026gt;\u003c/code\u003e_: Added \u003ccode\u003espy_return_iter\u003c/code\u003e to \u003ccode\u003emocker.spy\u003c/code\u003e, which contains a duplicate of the return value of the spied method if it is an \u003ccode\u003eIterator\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/pytest-dev/pytest-mock/commit/e1b5c62a38c5a05cae614aef3847f240ba50d269\"\u003e\u003ccode\u003ee1b5c62\u003c/code\u003e\u003c/a\u003e Release 3.15.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/184eb190d6be417f5f33727bcbc9704909479498\"\u003e\u003ccode\u003e184eb19\u003c/code\u003e\u003c/a\u003e Set \u003ccode\u003espy_return_iter\u003c/code\u003e only when explicitly requested (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/537\"\u003e#537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/4fa0088a0aa85eefb1313bd97adf43889bf1f647\"\u003e\u003ccode\u003e4fa0088\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/f5aff33ce71ed4620acc43dc41cb3b198bcf4cb0\"\u003e\u003ccode\u003ef5aff33\u003c/code\u003e\u003c/a\u003e Fix test failure with pytest 8+ and verbose mode (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/535\"\u003e#535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/adc41873c9d6aa69b87e3f108c93a29c847869aa\"\u003e\u003ccode\u003eadc4187\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/533\"\u003e#533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/95ad5700609aae73c6f767b8cc2ccfb2483e0f5c\"\u003e\u003ccode\u003e95ad570\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/532\"\u003e#532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/e696bf02c199b1f7d0c48adb450f40e5a75b699a\"\u003e\u003ccode\u003ee696bf0\u003c/code\u003e\u003c/a\u003e Fix standalone mock support (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/5b29b03ce9581cfcd867dd6c04a970fb2c861291\"\u003e\u003ccode\u003e5b29b03\u003c/code\u003e\u003c/a\u003e Fix gen-release-notes script\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/7d22ef4e560351832e60687d8bd15ebe2785ff3b\"\u003e\u003ccode\u003e7d22ef4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/528\"\u003e#528\u003c/a\u003e from pytest-dev/release-3.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/90b29f89e2086c139a7b4fea89202faa192ee5a9\"\u003e\u003ccode\u003e90b29f8\u003c/code\u003e\u003c/a\u003e Update CHANGELOG for 3.15.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-mock/compare/v3.14.1...v3.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `trio` from 0.30.0 to 0.33.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.33.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.32.0...v0.33.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.32.0...v0.33.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStart supporting Android's new \u003ccode\u003e\u0026quot;android\u0026quot;\u003c/code\u003e \u003ccode\u003esys.platform\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3357\"\u003epython-trio/trio#3357\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBoth \u003ccode\u003etrio.testing.RaisesGroup\u003c/code\u003e and \u003ccode\u003etrio.testing.Matcher\u003c/code\u003e have been deprecated. Pytest alternatives \u003ccode\u003epytest.RaisesGroup\u003c/code\u003e and \u003ccode\u003epytest.RaisesExc\u003c/code\u003e (respectively) are considered correct replacement. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3326\"\u003epython-trio/trio#3326\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow \u003ccode\u003etrio.CapacityLimiter\u003c/code\u003e to have zero total_tokens. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3321\"\u003epython-trio/trio#3321\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where iterating over an \u003ccode\u003e@as_safe_channel\u003c/code\u003e-derived \u003ccode\u003eReceiveChannel\u003c/code\u003e would raise \u003ccode\u003etrio.BrokenResourceError\u003c/code\u003e if the channel was closed by another task. It now shuts down cleanly. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3331\"\u003epython-trio/trio#3331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etrio.lowlevel.Task.iter_await_frames\u003c/code\u003e now works on completed tasks, by returning an empty list of frames if the underlying coroutine has been closed. Previously, it raised an internal error. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3337\"\u003epython-trio/trio#3337\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals without deprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003epython-trio/trio#3345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDecrease indentation for exception groups raised in \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3332\"\u003epython-trio/trio#3332\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\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/python-trio/trio/commit/3073f0c2108bad83c27dda6c83474a9b8ce4a957\"\u003e\u003ccode\u003e3073f0c\u003c/code\u003e\u003c/a\u003e Bump version to 0.33.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c21654b5f8375c5104625e6748492913cdb9d304\"\u003e\u003ccode\u003ec21654b\u003c/code\u003e\u003c/a\u003e Bump dependencies from commit 694044 (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3391\"\u003e#3391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/69404459f8eb0f7c4ca1433174fa0f5e9bad38ff\"\u003e\u003ccode\u003e6940445\u003c/code\u003e\u003c/a\u003e Documentation search improvements (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/e27a303941ae2bf63f2d2556b387e06262aa91f9\"\u003e\u003ccode\u003ee27a303\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3384\"\u003e#3384\u003c/a\u003e from A5rocks/update-sphinx\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/93b989b36befc55c5bded3f51a82a00a2aca37e8\"\u003e\u003ccode\u003e93b989b\u003c/code\u003e\u003c/a\u003e Add coredis and streaQ libraries to documentation (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3389\"\u003e#3389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/bc94ce138fa81f460f0d65f38a03cf3db04e6fe3\"\u003e\u003ccode\u003ebc94ce1\u003c/code\u003e\u003c/a\u003e Add coredis and streaQ libraries to documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/1ee96c8d84718cf32ef607a08b9069c8c2cdcc9f\"\u003e\u003ccode\u003e1ee96c8\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3387\"\u003e#3387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/95d92051c5acf71d717c77c7c996d4d0db3ab952\"\u003e\u003ccode\u003e95d9205\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3386\"\u003e#3386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/21250b16b52826ca1b6a38a8f08ecd40974c2c22\"\u003e\u003ccode\u003e21250b1\u003c/code\u003e\u003c/a\u003e Update to Sphinx 9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/4a9c6db4dd1a30bda74a08cf1e9a24c4777d9471\"\u003e\u003ccode\u003e4a9c6db\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3382\"\u003e#3382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.33.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.13.1 to 0.15.13\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.15.13\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\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/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.15.13\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\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/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\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/astral-sh/ruff/commit/2afb467ce397e4a89c13a0a814c62cfecb0e9e49\"\u003e\u003ccode\u003e2afb467\u003c/code\u003e\u003c/a\u003e Bump 0.15.13 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25157\"\u003e#25157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/300879600fa3af7cde1e675c63de6ad9d0797d1b\"\u003e\u003ccode\u003e3008796\u003c/code\u003e\u003c/a\u003e [ty] classify TypeVar semantic tokens as type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24891\"\u003e#24891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/79470e31877acb6074f3bbff2a49e508822ae4e8\"\u003e\u003ccode\u003e79470e3\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2522549901d50f18775999f0fb802b19229417f0\"\u003e\u003ccode\u003e2522549\u003c/code\u003e\u003c/a\u003e Remove shellcheck from prek (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25154\"\u003e#25154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7db7170020f539d6d2bc01dbd0b0c09fab91dc06\"\u003e\u003ccode\u003e7db7170\u003c/code\u003e\u003c/a\u003e [ty] Support TypedDict key completions in incomplete, anonymous contexts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25\"\u003e#25\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bb3dd535f1c5a83e2e56ac93a771fadbeeceebd0\"\u003e\u003ccode\u003ebb3dd53\u003c/code\u003e\u003c/a\u003e [ty] Run full iteration analysis on narrowed typevars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25143\"\u003e#25143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/828cdb7732efcb16a53f4ee5f011cf653b834d1a\"\u003e\u003ccode\u003e828cdb7\u003c/code\u003e\u003c/a\u003e [ty] Isolate file-watching test environment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25151\"\u003e#25151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/89e1d8670ea4d3af60c8143ee552dc750200718d\"\u003e\u003ccode\u003e89e1d86\u003c/code\u003e\u003c/a\u003e [ty] Preserve TypedDict keys through dict unpacking (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24523\"\u003e#24523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/86f3064d6fffa5697d174f26b840bd6857b381da\"\u003e\u003ccode\u003e86f3064\u003c/code\u003e\u003c/a\u003e [ty] Avoid accessing \u003ccode\u003eargs[0]\u003c/code\u003e for \u003ccode\u003estatic_assert\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25149\"\u003e#25149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed819f947dc27e36eac8bb3134153c4668d76a3a\"\u003e\u003ccode\u003eed819f9\u003c/code\u003e\u003c/a\u003e [ty] Treat custom enum \u003ccode\u003e__new__\u003c/code\u003e values as dynamic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25136\"\u003e#25136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.13.1...0.15.13\"\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 1.20.2\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 1.20.2\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse WAL with SQLite cache and fix close (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21154\"\u003e21154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdjust SQLite journal mode (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21217\"\u003e21217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCorrectly aggregate narrowing information on parent expressions (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21206\"\u003e21206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression related to generic callables (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21208\"\u003e21208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression by avoiding widening types in some contexts (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21242\"\u003e21242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix slicing in non-strict optional mode (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21282\"\u003e21282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emypyc: Fix match statement semantics for \u0026quot;or\u0026quot; pattern (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21156\"\u003e21156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emypyc: Fix issue with module dunder attributes (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21275\"\u003e21275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInitial support for Python 3.15.0a8 (Marc Mueller, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21255\"\u003e21255\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\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eAaron Wieczorek\u003c/li\u003e\n\u003cli\u003eAdam Turner\u003c/li\u003e\n\u003cli\u003eAli Hamdan\u003c/li\u003e\n\u003cli\u003easce\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003eBrent Westbrook\u003c/li\u003e\n\u003cli\u003eBrian Schubert\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChris Burroughs\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eColin Watson\u003c/li\u003e\n\u003cli\u003eDonghoon Nam\u003c/li\u003e\n\u003cli\u003eE. M. Bray\u003c/li\u003e\n\u003cli\u003eEmma Smith\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eGeorge Ogden\u003c/li\u003e\n\u003cli\u003egetzze\u003c/li\u003e\n\u003cli\u003egrayjk\u003c/li\u003e\n\u003cli\u003eGregor Riepl\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilliard\u003c/li\u003e\n\u003cli\u003eJames Le Cuirot\u003c/li\u003e\n\u003cli\u003eJeremy Nimmer\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eKai (Kazuya Ito)\u003c/li\u003e\n\u003cli\u003ekaushal trivedi\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eLukas Geiger\u003c/li\u003e\n\u003cli\u003eŁukasz Langa\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael R. Crusoe\u003c/li\u003e\n\u003cli\u003emichaelm-openai\u003c/li\u003e\n\u003cli\u003eNeil Schemenauer\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/145a062651b5f9996b75ef32b7040bd2e885ed82\"\u003e\u003ccode\u003e145a062\u003c/code\u003e\u003c/a\u003e Bump version to 1.20.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/81cd49215c288eacb987de066f02daff2553b7c7\"\u003e\u003ccode\u003e81cd492\u003c/code\u003e\u003c/a\u003e Fix slicing with nonstrict optional (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21282\"\u003e#21282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/908d3441eecbaa2a6193165317177db834d7ca1a\"\u003e\u003ccode\u003e908d344\u003c/code\u003e\u003c/a\u003e [mypyc] Set dunder attrs when adding module to sys.modules (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/ba28610fac9d2b33be210ca8dcfe4bc47b7af424\"\u003e\u003ccode\u003eba28610\u003c/code\u003e\u003c/a\u003e Initial support for Python 3.15.0a8 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21255\"\u003e#21255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7b0e09f48dbd3717ed008a273cd17e8e960c2037\"\u003e\u003ccode\u003e7b0e09f\u003c/code\u003e\u003c/a\u003e Fix match statement semantics for \u0026quot;or\u0026quot; pattern (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21156\"\u003e#21156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/92b74f226de62f7505f5ef5cb158e8ec9c58b8b7\"\u003e\u003ccode\u003e92b74f2\u003c/code\u003e\u003c/a\u003e Avoid widening types in conditional_types (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21242\"\u003e#21242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/0dcbfaa40b0e360a16baea9cf851955375d91b54\"\u003e\u003ccode\u003e0dcbfaa\u003c/code\u003e\u003c/a\u003e Fix is_overlapping_types for generic callables (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21208\"\u003e#21208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/210f518dede35292033ef0d387847406a0ccef8f\"\u003e\u003ccode\u003e210f518\u003c/code\u003e\u003c/a\u003e Correctly aggregate narrowing information on parent expressions (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21206\"\u003e#21206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c34530e53a10e385d8b0f1af4baa88a596b5ceaa\"\u003e\u003ccode\u003ec34530e\u003c/code\u003e\u003c/a\u003e Only set journal mode in coordinator (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21217\"\u003e#21217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/79a3ec6d01b56a27c00e9b3320c2b1d4d73a77f9\"\u003e\u003ccode\u003e79a3ec6\u003c/code\u003e\u003c/a\u003e Use WAL with SQLite cache, fix close (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21154\"\u003e#21154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.18.2...v1.20.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nYou can trigger a rebase of this PR 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/google-agentic-commerce/a2a-x402/pull/113","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/google-agentic-commerce%2Fa2a-x402/issues/113","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/113/packages"},{"uuid":"4006974431","node_id":"PR_kwDOD4wtHM7HHYNh","number":112,"state":"closed","title":"chore(deps-dev): bump the python-packages group across 1 directory with 7 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-12T15:32:39.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-01T11:29:21.000Z","updated_at":"2026-03-12T15:32:41.000Z","time_to_close":964998,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"python-packages","update_count":7,"packages":[{"name":"coverage","old_version":"7.13.2","new_version":"7.13.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"mypy","old_version":"1.16.1","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"ruff","old_version":"0.14.14","new_version":"0.15.4","repository_url":"https://github.com/astral-sh/ruff"},{"name":"trio","old_version":"0.32.0","new_version":"0.33.0","repository_url":"https://github.com/python-trio/trio"},{"name":"mkdocstrings","old_version":"1.0.2","new_version":"1.0.3","repository_url":"https://github.com/mkdocstrings/mkdocstrings"},{"name":"mkdocstrings-python","old_version":"2.0.1","new_version":"2.0.3","repository_url":"https://github.com/mkdocstrings/python"},{"name":"zensical","old_version":"0.0.23","new_version":"0.0.24","repository_url":"https://github.com/zensical/zensical"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.2` | `7.13.4` |\n| [mypy](https://github.com/python/mypy) | `1.16.1` | `1.19.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.14` | `0.15.4` |\n| [trio](https://github.com/python-trio/trio) | `0.32.0` | `0.33.0` |\n| [mkdocstrings](https://github.com/mkdocstrings/mkdocstrings) | `1.0.2` | `1.0.3` |\n| [mkdocstrings-python](https://github.com/mkdocstrings/python) | `2.0.1` | `2.0.3` |\n| [zensical](https://github.com/zensical/zensical) | `0.0.23` | `0.0.24` |\n\n\nUpdates `coverage` from 7.13.2 to 7.13.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.13.4 — 2026-02-09\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the third-party code fix in 7.13.3 required examining the parent\ndirectories where coverage was run. In the unusual situation that one of the\nparent directories is unreadable, a PermissionError would occur, as\ndescribed in \u003ccode\u003eissue 2129\u003c/code\u003e_. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: in test suites that change sys.path, coverage.py could fail with\n\u0026quot;RuntimeError: Set changed size during iteration\u0026quot; as described and fixed in\n\u003ccode\u003epull 2130\u003c/code\u003e_. Thanks, Noah Fatsi.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe now publish ppc64le wheels, thanks to \u003ccode\u003ePankhudi Jain \u0026lt;pull 2121_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2121: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2121\"\u003ecoveragepy/coveragepy#2121\u003c/a\u003e\n.. _issue 2129: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2129\"\u003ecoveragepy/coveragepy#2129\u003c/a\u003e\n.. _pull 2130: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2130\"\u003ecoveragepy/coveragepy#2130\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-3:\u003c/p\u003e\n\u003ch2\u003eVersion 7.13.3 — 2026-02-03\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: in some situations, third-party code was measured when it shouldn't have\nbeen, slowing down test execution. This happened with layered virtual\nenvironments such as uv sometimes makes. The problem is fixed, closing \u003ccode\u003eissue 2082\u003c/code\u003e_. Now any directory on sys.path that is inside a virtualenv is\nconsidered third-party code.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2082: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2082\"\u003ecoveragepy/coveragepy#2082\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-2:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/4f78d57f83ff8a4976043e8a8fcea24b91891840\"\u003e\u003ccode\u003e4f78d57\u003c/code\u003e\u003c/a\u003e build: no need to publish status.json\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f8616ff5e6386648aa40300e36c6cecda79a1faa\"\u003e\u003ccode\u003ef8616ff\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/fcf8c68db986970e6000bf75ec3c3115ede867df\"\u003e\u003ccode\u003efcf8c68\u003c/code\u003e\u003c/a\u003e docs: prep for 7.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/189ecfd000867e5c74e7d74ee3bd75742d5d584d\"\u003e\u003ccode\u003e189ecfd\u003c/code\u003e\u003c/a\u003e docs: thanks Pankhudi Jain for ppc64le wheels \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2121\"\u003e#2121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/58aade0eb92d9d1e3755c65a5cf7a951e7bd6c6a\"\u003e\u003ccode\u003e58aade0\u003c/code\u003e\u003c/a\u003e build: add support for ppc64le architecture (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2121\"\u003e#2121\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8ea42c874fbfc96535156300225bda22bc93ac68\"\u003e\u003ccode\u003e8ea42c8\u003c/code\u003e\u003c/a\u003e chore: bump actions/attest-build-provenance (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2131\"\u003e#2131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c09595f70758b78156efbd7c8f034799d09322aa\"\u003e\u003ccode\u003ec09595f\u003c/code\u003e\u003c/a\u003e docs: Janine put a lot of effort into debugging issue \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2128\"\u003e#2128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8ee1760f40b8822aa2b11ff95ab63481be68a8a0\"\u003e\u003ccode\u003e8ee1760\u003c/code\u003e\u003c/a\u003e docs: Greg wrote a great issue: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2129\"\u003e#2129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/76ba0437611fc2787cb0450dc94b02bc2848fdee\"\u003e\u003ccode\u003e76ba043\u003c/code\u003e\u003c/a\u003e docs: thanks, Noah Fatsi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/371fcc5727e9d8fba816061756af94646b4bcfbb\"\u003e\u003ccode\u003e371fcc5\u003c/code\u003e\u003c/a\u003e fix: set fixed paths_list in TreeMatcher init (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2130\"\u003e#2130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.2...7.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.16.1 to 1.19.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 1.19.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix noncommutative joins with bounded TypeVars (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20345\"\u003e20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect output format for cached runs by serializing raw errors in cache metas (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20372\"\u003e20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (A5rocks, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20383\"\u003e20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc generator regression with empty tuple (BobTheBuidler, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20371\"\u003e20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash involving Unpack-ed TypeVarTuple (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20323\"\u003e20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on star import of redefinition (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20333\"\u003e20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on typevar with forward ref used in other module (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20334\"\u003e20334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFail with an explicit error on PyPy (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20389\"\u003e20389\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\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChainfire\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eDavid Foster\u003c/li\u003e\n\u003cli\u003eFrank Dana\u003c/li\u003e\n\u003cli\u003eGuo Ci\u003c/li\u003e\n\u003cli\u003eiap\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilton-Balfe\u003c/li\u003e\n\u003cli\u003ejhance\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003eKarelKenens\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael Carlstrom\u003c/li\u003e\n\u003cli\u003eMichael J. Sullivan\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eRandolf Scholz\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eSigve Sebastian Farstad\u003c/li\u003e\n\u003cli\u003esobolevn\u003c/li\u003e\n\u003cli\u003eStanislav Terliakov\u003c/li\u003e\n\u003cli\u003eStephen Morton\u003c/li\u003e\n\u003cli\u003eTheodore Ando\u003c/li\u003e\n\u003cli\u003eThiago J. Barbalho\u003c/li\u003e\n\u003cli\u003ewyattscarpenter\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 1.18\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.18.1 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\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/412c19a6bde31e7afa7f41afdf8356664689ae80\"\u003e\u003ccode\u003e412c19a\u003c/code\u003e\u003c/a\u003e Bump version to 1.19.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/20aea0a6ca0710f5427239bdd2fd8e8bf1caf634\"\u003e\u003ccode\u003e20aea0a\u003c/code\u003e\u003c/a\u003e Update changelog for 1.19.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20414\"\u003e#20414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b23b507524bf1bd7513eea6f2a16fb91e072cb6\"\u003e\u003ccode\u003e2b23b50\u003c/code\u003e\u003c/a\u003e Serialize raw errors in cache metas (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20372\"\u003e#20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f60f90fb8872bf722e32aefd548daaf6d8560e05\"\u003e\u003ccode\u003ef60f90f\u003c/code\u003e\u003c/a\u003e Fail on PyPy in main instead of setup.py (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20389\"\u003e#20389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/58d485b4ea4776e0b9d4045b306cb0818ecc2aa6\"\u003e\u003ccode\u003e58d485b\u003c/code\u003e\u003c/a\u003e Fail with an explicit error on PyPy (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20384\"\u003e#20384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a4b31a26788b70c4a2a19adbafa2bbda43dc2e8b\"\u003e\u003ccode\u003ea4b31a2\u003c/code\u003e\u003c/a\u003e Allow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20383\"\u003e#20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8a6eff478416cd3ed3931a6ed77ce61c88ab69e9\"\u003e\u003ccode\u003e8a6eff4\u003c/code\u003e\u003c/a\u003e [mypyc] fix generator regression with empty tuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20371\"\u003e#20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/70eceea682c041c0d8e8462dffef9c7bb252e014\"\u003e\u003ccode\u003e70eceea\u003c/code\u003e\u003c/a\u003e Fix noncommutative joins with bounded TypeVars (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20345\"\u003e#20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3890fc49bf7cc02db04b1e63eb2540aaacdeecc0\"\u003e\u003ccode\u003e3890fc4\u003c/code\u003e\u003c/a\u003e Fix crash involving Unpack-ed TypeVarTuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20323\"\u003e#20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c93d917a86993e06dcc88e508f28f4f5199ce1c8\"\u003e\u003ccode\u003ec93d917\u003c/code\u003e\u003c/a\u003e Fix crash on star import of redefinition (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20333\"\u003e#20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.16.1...v1.19.1\"\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.14 to 0.15.4\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.15.4\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-26.\u003c/p\u003e\n\u003cp\u003eThis is a follow-up release to 0.15.3 that resolves a panic when the new rule \u003ccode\u003ePLR1712\u003c/code\u003e was enabled with any rule that analyzes definitions, such as many of the \u003ccode\u003eANN\u003c/code\u003e or \u003ccode\u003eD\u003c/code\u003e rules.\u003c/p\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix panic on access to definitions after analyzing definitions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23588\"\u003e#23588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Suppress false positive in \u003ccode\u003eF821\u003c/code\u003e for names used before \u003ccode\u003edel\u003c/code\u003e in stub files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23550\"\u003e#23550\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify first-party import detection in Ruff (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23591\"\u003e#23591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003eimport-heading\u003c/code\u003e example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23568\"\u003e#23568\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/stakeswky\"\u003e\u003ccode\u003e@​stakeswky\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/thejcannon\"\u003e\u003ccode\u003e@​thejcannon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GeObts\"\u003e\u003ccode\u003e@​GeObts\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.4\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://github.com/astral-sh/ruff/releases/download/0.15.4/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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.15.4\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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-aarch64-apple-darwin.tar.gz\"\u003eruff-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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-x86_64-apple-darwin.tar.gz\"\u003eruff-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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-aarch64-pc-windows-msvc.zip\"\u003eruff-aarch64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-i686-pc-windows-msvc.zip\"\u003eruff-i686-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-x86_64-pc-windows-msvc.zip\"\u003eruff-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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-aarch64-unknown-linux-gnu.tar.gz\"\u003eruff-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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-aarch64-unknown-linux-gnu.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-i686-unknown-linux-gnu.tar.gz\"\u003eruff-i686-unknown-linux-gnu.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-i686-unknown-linux-gnu.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-powerpc64-unknown-linux-gnu.tar.gz\"\u003eruff-powerpc64-unknown-linux-gnu.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ePPC64 Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-powerpc64-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/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.4\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-26.\u003c/p\u003e\n\u003cp\u003eThis is a follow-up release to 0.15.3 that resolves a panic when the new rule \u003ccode\u003ePLR1712\u003c/code\u003e was enabled with any rule that analyzes definitions, such as many of the \u003ccode\u003eANN\u003c/code\u003e or \u003ccode\u003eD\u003c/code\u003e rules.\u003c/p\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix panic on access to definitions after analyzing definitions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23588\"\u003e#23588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Suppress false positive in \u003ccode\u003eF821\u003c/code\u003e for names used before \u003ccode\u003edel\u003c/code\u003e in stub files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23550\"\u003e#23550\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify first-party import detection in Ruff (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23591\"\u003e#23591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003eimport-heading\u003c/code\u003e example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23568\"\u003e#23568\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/stakeswky\"\u003e\u003ccode\u003e@​stakeswky\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/thejcannon\"\u003e\u003ccode\u003e@​thejcannon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GeObts\"\u003e\u003ccode\u003e@​GeObts\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.3\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-26.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDrop explicit support for \u003ccode\u003e.qmd\u003c/code\u003e file extension (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23572\"\u003e#23572\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThis can now be enabled instead by setting the \u003ca href=\"https://docs.astral.sh/ruff/settings/#extension\"\u003e\u003ccode\u003eextension\u003c/code\u003e\u003c/a\u003e option:\u003c/p\u003e\n\u003cpre lang=\"toml\"\u003e\u003ccode\u003e# ruff.toml\nextension = { qmd = \u0026quot;markdown\u0026quot; }\n\u003ch1\u003epyproject.toml\u003c/h1\u003e\n\u003cp\u003e[tool.ruff]\nextension = { qmd = \u0026quot;markdown\u0026quot; }\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eInclude configured extensions in file discovery (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23400\"\u003e#23400\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Allow suspicious imports in \u003ccode\u003eTYPE_CHECKING\u003c/code\u003e blocks (\u003ccode\u003eS401\u003c/code\u003e-\u003ccode\u003eS415\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23441\"\u003e#23441\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Allow \u003ccode\u003eB901\u003c/code\u003e in pytest hook wrappers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21931\"\u003e#21931\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[\u003ccode\u003eflake8-import-conventions\u003c/code\u003e] Add missing conventions from upstream (\u003ccode\u003eICN001\u003c/code\u003e, \u003ccode\u003eICN002\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21373\"\u003e#21373\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f14edd8661e2803254f89265548c7487f47a09f6\"\u003e\u003ccode\u003ef14edd8\u003c/code\u003e\u003c/a\u003e Bump 0.15.4 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23595\"\u003e#23595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/fd09d370076ab585444fd39f0fee79bf29280b68\"\u003e\u003ccode\u003efd09d37\u003c/code\u003e\u003c/a\u003e Fix panic on access to definitions after analyzing definitions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23588\"\u003e#23588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/81d655fadce087b792e524ed1964e9bcc31b73cd\"\u003e\u003ccode\u003e81d655f\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epyflakes\u003c/code\u003e] suppress false positive in \u003ccode\u003eF821\u003c/code\u003e for names used before \u003ccode\u003edel\u003c/code\u003e in...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/625b4f5a672d1baaa6f25e0999ca428f3f2522f1\"\u003e\u003ccode\u003e625b4f5\u003c/code\u003e\u003c/a\u003e [ruff] docs: Clarify first-party import detection in Ruff (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23591\"\u003e#23591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/60facfa0bc02689637e25237f0df5abfc2f27054\"\u003e\u003ccode\u003e60facfa\u003c/code\u003e\u003c/a\u003e one word typo fix in a \u003ccode\u003ewhile_loop.md\u003c/code\u003e test case (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23589\"\u003e#23589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/fbb9fa75cc1915973a739da0ec469094176bfdc6\"\u003e\u003ccode\u003efbb9fa7\u003c/code\u003e\u003c/a\u003e docs: fix incorrect import-heading example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23568\"\u003e#23568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5bc49a941279c9100ff834edae1cb63053aeec93\"\u003e\u003ccode\u003e5bc49a9\u003c/code\u003e\u003c/a\u003e Increase the ruleset size to 16 bits (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23586\"\u003e#23586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/a62ba8c6e2bac0b899d90fd30a1b26c07aac44bb\"\u003e\u003ccode\u003ea62ba8c\u003c/code\u003e\u003c/a\u003e [ty] Fix overloaded callable assignability for unary Callable targets (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23277\"\u003e#23277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e5f2f36a3f49b45fd7506d42b12c495c2517e936\"\u003e\u003ccode\u003ee5f2f36\u003c/code\u003e\u003c/a\u003e Bump 0.15.3 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23585\"\u003e#23585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/0e19fc9a61477e71abc4eb76f05a129b6b9ab873\"\u003e\u003ccode\u003e0e19fc9\u003c/code\u003e\u003c/a\u003e [ty] defer calculating conjunctions in narrowing constraints (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23552\"\u003e#23552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.14.14...0.15.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `trio` from 0.32.0 to 0.33.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.33.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.32.0...v0.33.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.32.0...v0.33.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStart supporting Android's new \u003ccode\u003e\u0026quot;android\u0026quot;\u003c/code\u003e \u003ccode\u003esys.platform\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3357\"\u003epython-trio/trio#3357\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBoth \u003ccode\u003etrio.testing.RaisesGroup\u003c/code\u003e and \u003ccode\u003etrio.testing.Matcher\u003c/code\u003e have been deprecated. Pytest alternatives \u003ccode\u003epytest.RaisesGroup\u003c/code\u003e and \u003ccode\u003epytest.RaisesExc\u003c/code\u003e (respectively) are considered correct replacement. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3326\"\u003epython-trio/trio#3326\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/python-trio/trio/commit/3073f0c2108bad83c27dda6c83474a9b8ce4a957\"\u003e\u003ccode\u003e3073f0c\u003c/code\u003e\u003c/a\u003e Bump version to 0.33.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c21654b5f8375c5104625e6748492913cdb9d304\"\u003e\u003ccode\u003ec21654b\u003c/code\u003e\u003c/a\u003e Bump dependencies from commit 694044 (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3391\"\u003e#3391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/69404459f8eb0f7c4ca1433174fa0f5e9bad38ff\"\u003e\u003ccode\u003e6940445\u003c/code\u003e\u003c/a\u003e Documentation search improvements (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/e27a303941ae2bf63f2d2556b387e06262aa91f9\"\u003e\u003ccode\u003ee27a303\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3384\"\u003e#3384\u003c/a\u003e from A5rocks/update-sphinx\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/93b989b36befc55c5bded3f51a82a00a2aca37e8\"\u003e\u003ccode\u003e93b989b\u003c/code\u003e\u003c/a\u003e Add coredis and streaQ libraries to documentation (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3389\"\u003e#3389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/bc94ce138fa81f460f0d65f38a03cf3db04e6fe3\"\u003e\u003ccode\u003ebc94ce1\u003c/code\u003e\u003c/a\u003e Add coredis and streaQ libraries to documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/1ee96c8d84718cf32ef607a08b9069c8c2cdcc9f\"\u003e\u003ccode\u003e1ee96c8\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3387\"\u003e#3387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/95d92051c5acf71d717c77c7c996d4d0db3ab952\"\u003e\u003ccode\u003e95d9205\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3386\"\u003e#3386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/21250b16b52826ca1b6a38a8f08ecd40974c2c22\"\u003e\u003ccode\u003e21250b1\u003c/code\u003e\u003c/a\u003e Update to Sphinx 9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/4a9c6db4dd1a30bda74a08cf1e9a24c4777d9471\"\u003e\u003ccode\u003e4a9c6db\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3382\"\u003e#3382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/compare/v0.32.0...v0.33.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocstrings` from 1.0.2 to 1.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases\"\u003emkdocstrings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.0.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases/tag/1.0.3\"\u003e1.0.3\u003c/a\u003e - 2026-02-07\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.2...1.0.3\"\u003eCompare with 1.0.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eForward extension instances directly passed from Zensical (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/65b27ec8d1d671eddf021e48b0114cc3f8aca14a\"\u003e65b27ec\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003cli\u003ePropagate Zensical's \u003ccode\u003ezrelpath\u003c/code\u003e processor (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/dbf263dfdd2fdd769d66fa62bdd388e05988bc78\"\u003edbf263d\u003c/a\u003e by Timothée Mazzucotelli).\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/mkdocstrings/mkdocstrings/blob/main/CHANGELOG.md\"\u003emkdocstrings's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases/tag/1.0.3\"\u003e1.0.3\u003c/a\u003e - 2026-02-07\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.2...1.0.3\"\u003eCompare with 1.0.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eForward extension instances directly passed from Zensical (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/65b27ec8d1d671eddf021e48b0114cc3f8aca14a\"\u003e65b27ec\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003cli\u003ePropagate Zensical's \u003ccode\u003ezrelpath\u003c/code\u003e processor (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/dbf263dfdd2fdd769d66fa62bdd388e05988bc78\"\u003edbf263d\u003c/a\u003e by Timothée Mazzucotelli).\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/mkdocstrings/mkdocstrings/commit/8bdff16af916b7285eae5a07eb085c21754be3b7\"\u003e\u003ccode\u003e8bdff16\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/65b27ec8d1d671eddf021e48b0114cc3f8aca14a\"\u003e\u003ccode\u003e65b27ec\u003c/code\u003e\u003c/a\u003e fix: Forward extension instances directly passed from Zensical\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/1624e2c52fbdff2ee611142edbf52454427f8f8d\"\u003e\u003ccode\u003e1624e2c\u003c/code\u003e\u003c/a\u003e ci: Update lint/type-checking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/cc3d6a4d286668a9a249ac38dfaf8b45470f3314\"\u003e\u003ccode\u003ecc3d6a4\u003c/code\u003e\u003c/a\u003e chore: Template upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/dbf263dfdd2fdd769d66fa62bdd388e05988bc78\"\u003e\u003ccode\u003edbf263d\u003c/code\u003e\u003c/a\u003e fix: Propagate Zensical's \u003ccode\u003ezrelpath\u003c/code\u003e processor\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.2...1.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocstrings-python` from 2.0.1 to 2.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/python/releases\"\u003emkdocstrings-python's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.0.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/python/releases/tag/2.0.3\"\u003e2.0.3\u003c/a\u003e - 2026-02-20\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.2...2.0.3\"\u003eCompare with 2.0.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBuild\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDepend on griffelib instead of griffe (\u003ca href=\"https://github.com/mkdocstrings/python/commit/770a5f69d801f24f0b36d1e671a540196e06f710\"\u003e770a5f6\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.0.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/python/releases/tag/2.0.2\"\u003e2.0.2\u003c/a\u003e - 2026-02-09\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.1...2.0.2\"\u003eCompare with 2.0.1\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix aliases for parameters (\u003ca href=\"https://github.com/mkdocstrings/python/commit/0ae77a3454d47e873be38637ea30d043004ee981\"\u003e0ae77a3\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/mkdocstrings/mkdocstrings/issues/813\"\u003eIssue-mkdocstrings-813\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/mkdocstrings/python/blob/main/CHANGELOG.md\"\u003emkdocstrings-python's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/python/releases/tag/2.0.3\"\u003e2.0.3\u003c/a\u003e - 2026-02-20\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.2...2.0.3\"\u003eCompare with 2.0.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBuild\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDepend on griffelib instead of griffe (\u003ca href=\"https://github.com/mkdocstrings/python/commit/770a5f69d801f24f0b36d1e671a540196e06f710\"\u003e770a5f6\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/python/releases/tag/2.0.2\"\u003e2.0.2\u003c/a\u003e - 2026-02-09\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.1...2.0.2\"\u003eCompare with 2.0.1\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix aliases for parameters (\u003ca href=\"https://github.com/mkdocstrings/python/commit/0ae77a3454d47e873be38637ea30d043004ee981\"\u003e0ae77a3\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/mkdocstrings/mkdocstrings/issues/813\"\u003eIssue-mkdocstrings-813\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/mkdocstrings/python/commit/a0b99c5ed6ac44b627e2e57375e474e0939ea02e\"\u003e\u003ccode\u003ea0b99c5\u003c/code\u003e\u003c/a\u003e chore: Prepare release 2.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/770a5f69d801f24f0b36d1e671a540196e06f710\"\u003e\u003ccode\u003e770a5f6\u003c/code\u003e\u003c/a\u003e build: Depend on griffelib instead of griffe\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/bf8caaf76efcfe3572b40f4129117ed32bdc2ee7\"\u003e\u003ccode\u003ebf8caaf\u003c/code\u003e\u003c/a\u003e Merge branch 'main' of github.com:mkdocstrings/python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/95f58aa56a78df160fc66892815cb4c49d291044\"\u003e\u003ccode\u003e95f58aa\u003c/code\u003e\u003c/a\u003e ci: Minor lint fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/186d6cfac78dbc96bcb753473ceb68db5fa46f73\"\u003e\u003ccode\u003e186d6cf\u003c/code\u003e\u003c/a\u003e chore: Update sponsors section in README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/4e546b5ddc527c74cfa695890faea404a69b7ee2\"\u003e\u003ccode\u003e4e546b5\u003c/code\u003e\u003c/a\u003e chore: Prepare release 2.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/1781871f96323002a0be145695105a04e3f17f83\"\u003e\u003ccode\u003e1781871\u003c/code\u003e\u003c/a\u003e Merge branch 'main' of github.com:mkdocstrings/python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/0ae77a3454d47e873be38637ea30d043004ee981\"\u003e\u003ccode\u003e0ae77a3\u003c/code\u003e\u003c/a\u003e fix: Fix aliases for parameters\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/5bab7f500db27b95e0eb6a28b2fbb846a0fba146\"\u003e\u003ccode\u003e5bab7f5\u003c/code\u003e\u003c/a\u003e chore: Update sponsors section in README (\u003ca href=\"https://redirect.github.com/mkdocstrings/python/issues/325\"\u003e#325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.1...2.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `zensical` from 0.0.23 to 0.0.24\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/zensical/zensical/releases\"\u003ezensical's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.24\u003c/h2\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis version updates the \u003ca href=\"https://github.com/zensical/ui\"\u003euser interface\u003c/a\u003e to \u003ca href=\"https://github.com/zensical/ui/releases/tag/v0.0.8\"\u003ev0.0.8\u003c/a\u003e, which fixes issues with instant previews for Chinese and other non-ASCII languages, and layout shifts when switching from short to long pages in the modern theme. Additionally, same-page links for when directory URLs are disabled where not resolved correctly, which is fixed as well.\u003c/p\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e1a9d034 \u003cstrong\u003eui\u003c/strong\u003e – update ui to v0.0.8\u003c/li\u003e\n\u003cli\u003e798da33 \u003cstrong\u003ecompat\u003c/strong\u003e – ignore virtual environments in mkdocstrings sources (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e4b1ac98 \u003cstrong\u003ezensical\u003c/strong\u003e – same page links '.' with directory URLs disabled (regression) (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/389\"\u003e#389\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/zensical/zensical/commit/0ca44a6abc88e3ab50d66908aabbe3b35adaa683\"\u003e\u003ccode\u003e0ca44a6\u003c/code\u003e\u003c/a\u003e chore: release v0.0.24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/1a9d0347e7a37b6abc861cf4b1b509db1f9087c9\"\u003e\u003ccode\u003e1a9d034\u003c/code\u003e\u003c/a\u003e fix: update ui to v0.0.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/798da3350a2d63dadc7184f9340d0104f7e654ab\"\u003e\u003ccode\u003e798da33\u003c/code\u003e\u003c/a\u003e fix: ignore virtual environments in mkdocstrings sources (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/4b1ac9855062bf30aa7e075fb0607b3b0c88fc36\"\u003e\u003ccode\u003e4b1ac98\u003c/code\u003e\u003c/a\u003e fix: same page links '.' with directory URLs disabled (regression) (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/389\"\u003e#389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/01b5f8f8ada406ab4afb690d189e03a7d0c1a2f7\"\u003e\u003ccode\u003e01b5f8f\u003c/code\u003e\u003c/a\u003e docs: add note on Zensical Spark to \u003ccode\u003eREADME.md\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/zensical/zensical/compare/v0.0.23...v0.0.24\"\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/sthagen/encode-starlette/pull/112","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sthagen%2Fencode-starlette/issues/112","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/112/packages"},{"uuid":"3997636472","node_id":"PR_kwDOK8weY87GpsiX","number":478,"state":"closed","title":"deps(pip)(deps): bump the python-minor-patch group across 1 directory with 93 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-04T02:51:11.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-26T20:36:45.000Z","updated_at":"2026-03-04T02:51:13.000Z","time_to_close":454466,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(pip)(deps): bump","group_name":"python-minor-patch","update_count":93,"packages":[{"name":"anthropic","old_version":"0.76.0","new_version":"0.84.0"},{"name":"google-genai","old_version":"1.57.0","new_version":"1.65.0","repository_url":"https://github.com/googleapis/python-genai"},{"name":"huggingface-hub","old_version":"1.4.1","new_version":"1.5.0","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"llama-index","old_version":"0.14.14","new_version":"0.14.15","repository_url":"https://github.com/run-llama/llama_index"},{"name":"llama-index-core","old_version":"0.14.14","new_version":"0.14.15","repository_url":"https://github.com/run-llama/llama_index"},{"name":"llama-index-embeddings-gemini","old_version":"0.4.1","new_version":"0.4.2"},{"name":"llama-index-llms-anthropic","old_version":"0.10.5","new_version":"0.10.10"},{"name":"llama-index-llms-gemini","old_version":"0.6.1","new_version":"0.6.2"},{"name":"llama-index-llms-google-genai","old_version":"0.8.3","new_version":"0.8.7"},{"name":"llama-index-llms-huggingface-api","old_version":"0.6.1","new_version":"0.6.2"},{"name":"llama-index-llms-mistralai","old_version":"0.9.0","new_version":"0.10.0.post2"},{"name":"llama-index-llms-openai","old_version":"0.6.13","new_version":"0.6.21"},{"name":"llama-index-llms-openai-like","old_version":"0.5.3","new_version":"0.6.0"},{"name":"llama-index-readers-file","old_version":"0.5.4","new_version":"0.5.6"},{"name":"llama-index-readers-github","old_version":"0.8.2","new_version":"0.10.0"},{"name":"llama-index-workflows","old_version":"2.12.0","new_version":"2.14.2"},{"name":"mistralai","old_version":"1.10.0","new_version":"1.12.4","repository_url":"https://github.com/mistralai/client-python"},{"name":"onnxruntime","old_version":"1.23.2","new_version":"1.24.2","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"openai","old_version":"2.21.0","new_version":"2.24.0","repository_url":"https://github.com/openai/openai-python"},{"name":"openai-agents","old_version":"0.9.0","new_version":"0.10.2","repository_url":"https://github.com/openai/openai-agents-python"},{"name":"transformers","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/huggingface/transformers"},{"name":"chromadb","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/chroma-core/chroma"},{"name":"faiss-cpu","old_version":"1.8.0.post1","new_version":"1.13.2","repository_url":"https://github.com/kyamagu/faiss-wheels"},{"name":"pandas","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pinecone","old_version":"8.0.0","new_version":"8.1.0","repository_url":"https://github.com/pinecone-io/pinecone-python-client"},{"name":"pinecone-plugin-assistant","old_version":"3.0.1","new_version":"3.0.2"},{"name":"qdrant-client","old_version":"1.16.2","new_version":"1.17.0","repository_url":"https://github.com/qdrant/qdrant-client"},{"name":"weaviate-client","old_version":"4.19.2","new_version":"4.20.1","repository_url":"https://github.com/weaviate/weaviate-python-client"},{"name":"azure-core","old_version":"1.38.0","new_version":"1.38.2","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-identity","old_version":"1.25.1","new_version":"1.25.2","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"boto3","old_version":"1.42.43","new_version":"1.42.57","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.42.43","new_version":"1.42.57","repository_url":"https://github.com/boto/botocore"},{"name":"google-cloud-aiplatform","old_version":"1.133.0","new_version":"1.139.0","repository_url":"https://github.com/googleapis/python-aiplatform"},{"name":"google-cloud-storage","old_version":"3.8.0","new_version":"3.9.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"bandit","old_version":"1.9.2","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"debugpy","old_version":"1.8.19","new_version":"1.8.20","repository_url":"https://github.com/microsoft/debugpy"},{"name":"ipython","old_version":"9.9.0","new_version":"9.10.0","repository_url":"https://github.com/ipython/ipython"},{"name":"pip-tools","old_version":"7.5.2","new_version":"7.5.3","repository_url":"https://github.com/jazzband/pip-tools"},{"name":"rich","old_version":"14.2.0","new_version":"14.3.3","repository_url":"https://github.com/Textualize/rich"},{"name":"ruff","old_version":"0.15.1","new_version":"0.15.4","repository_url":"https://github.com/astral-sh/ruff"},{"name":"uv","old_version":"0.10.2","new_version":"0.10.6","repository_url":"https://github.com/astral-sh/uv"},{"name":"sounddevice","old_version":"0.5.3","new_version":"0.5.5","repository_url":"https://github.com/spatialaudio/python-sounddevice"},{"name":"certifi","old_version":"2026.1.4","new_version":"2026.2.25","repository_url":"https://github.com/certifi/python-certifi"},{"name":"fastapi","old_version":"0.129.0","new_version":"0.133.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"pydantic-settings","old_version":"2.12.0","new_version":"2.13.1","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"banks","old_version":"2.3.0","new_version":"2.4.1","repository_url":"https://github.com/masci/banks"},{"name":"beautifulsoup4","old_version":"4.13.5","new_version":"4.14.3"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"docx2txt","old_version":"0.8","new_version":"0.9","repository_url":"https://github.com/ankushshah89/python-docx2txt"},{"name":"ebooklib","old_version":"0.18","new_version":"0.20","repository_url":"https://github.com/aerkalov/ebooklib"},{"name":"filelock","old_version":"3.20.3","new_version":"3.24.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"firecrawl-py","old_version":"4.14.0","new_version":"4.17.1","repository_url":"https://github.com/firecrawl/firecrawl"},{"name":"gkeepapi","old_version":"0.15.1","new_version":"0.17.1","repository_url":"https://github.com/kiwiz/gkeepapi"},{"name":"google-api-core","old_version":"2.29.0","new_version":"2.30.0"},{"name":"google-api-python-client","old_version":"2.187.0","new_version":"2.190.0","repository_url":"https://github.com/googleapis/google-api-python-client"},{"name":"google-auth-httplib2","old_version":"0.2.1","new_version":"0.3.0","repository_url":"https://github.com/GoogleCloudPlatform/google-auth-library-python-httplib2"},{"name":"greenlet","old_version":"3.3.1","new_version":"3.3.2","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.75.0","new_version":"1.78.0","repository_url":"https://github.com/grpc/grpc"},{"name":"grpcio-status","old_version":"1.71.2","new_version":"1.78.0"},{"name":"httpx-socks","old_version":"0.10.1","new_version":"0.11.0","repository_url":"https://github.com/romis2012/httpx-socks"},{"name":"llama-index-vector-stores-qdrant","old_version":"0.8.8","new_version":"0.9.1"},{"name":"markdown","old_version":"3.10.1","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"ml-dtypes","old_version":"0.4.1","new_version":"0.5.4","repository_url":"https://github.com/jax-ml/ml_dtypes"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/mpmath/mpmath"},{"name":"msal","old_version":"1.34.0","new_version":"1.35.0","repository_url":"https://github.com/AzureAD/microsoft-authentication-library-for-python"},{"name":"opencv-python","old_version":"4.11.0.86","new_version":"4.13.0.92","repository_url":"https://github.com/opencv/opencv-python"},{"name":"parso","old_version":"0.8.5","new_version":"0.8.6","repository_url":"https://github.com/davidhalter/parso"},{"name":"platformdirs","old_version":"4.5.1","new_version":"4.9.2","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pydantic-core","old_version":"2.41.5","new_version":"2.42.0","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pyee","old_version":"13.0.0","new_version":"13.0.1","repository_url":"https://github.com/jfhbrook/pyee"},{"name":"pypdf","old_version":"6.7.2","new_version":"6.7.3","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"pyside6","old_version":"6.9.1","new_version":"6.10.2"},{"name":"pyside6-addons","old_version":"6.9.1","new_version":"6.10.2"},{"name":"pyside6-essentials","old_version":"6.9.1","new_version":"6.10.2"},{"name":"python-markdown-math","old_version":"0.8","new_version":"0.9","repository_url":"https://github.com/mitya57/python-markdown-math"},{"name":"python-socks","old_version":"2.8.0","new_version":"2.8.1","repository_url":"https://github.com/romis2012/python-socks"},{"name":"qasync","old_version":"0.27.1","new_version":"0.28.0","repository_url":"https://github.com/CabbageDevelopment/qasync"},{"name":"redisvl","old_version":"0.4.1","new_version":"0.14.0","repository_url":"https://github.com/redis/redis-vl-python"},{"name":"regex","old_version":"2026.1.15","new_version":"2026.2.19","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"selenium","old_version":"4.39.0","new_version":"4.41.0","repository_url":"https://github.com/SeleniumHQ/Selenium"},{"name":"shiboken6","old_version":"6.9.1","new_version":"6.10.2"},{"name":"show-in-file-manager","old_version":"1.1.5","new_version":"1.1.6","repository_url":"https://github.com/damonlynch/showinfilemanager"},{"name":"spider-client","old_version":"0.0.27","new_version":"0.1.85","repository_url":"https://github.com/spider-rs/spider-clients"},{"name":"sqlalchemy","old_version":"2.0.43","new_version":"2.0.47"},{"name":"striprtf","old_version":"0.0.26","new_version":"0.0.29","repository_url":"https://github.com/joshy/striprtf"},{"name":"tenacity","old_version":"9.1.3","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"tinycss2","old_version":"1.4.0","new_version":"1.5.1","repository_url":"https://github.com/Kozea/tinycss2"},{"name":"tinysegmenter","old_version":"0.3","new_version":"0.4"},{"name":"trio","old_version":"0.32.0","new_version":"0.33.0","repository_url":"https://github.com/python-trio/trio"},{"name":"typer","old_version":"0.21.1","new_version":"0.24.1","repository_url":"https://github.com/fastapi/typer"},{"name":"urllib3","old_version":"2.5.0","new_version":"2.6.3"},{"name":"wcwidth","old_version":"0.5.3","new_version":"0.6.0","repository_url":"https://github.com/jquast/wcwidth"},{"name":"xai-sdk","old_version":"1.6.1","new_version":"1.7.0","repository_url":"https://github.com/xai-org/xai-sdk-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 93 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anthropic[bedrock,vertex]](https://github.com/anthropics/anthropic-sdk-python) | `0.76.0` | `0.84.0` |\n| [google-genai](https://github.com/googleapis/python-genai) | `1.57.0` | `1.65.0` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `1.4.1` | `1.5.0` |\n| [llama-index](https://github.com/run-llama/llama_index) | `0.14.14` | `0.14.15` |\n| [llama-index-core](https://github.com/run-llama/llama_index) | `0.14.14` | `0.14.15` |\n| llama-index-embeddings-gemini | `0.4.1` | `0.4.2` |\n| llama-index-llms-anthropic | `0.10.5` | `0.10.10` |\n| llama-index-llms-gemini | `0.6.1` | `0.6.2` |\n| llama-index-llms-google-genai | `0.8.3` | `0.8.7` |\n| llama-index-llms-huggingface-api | `0.6.1` | `0.6.2` |\n| llama-index-llms-mistralai | `0.9.0` | `0.10.0.post2` |\n| llama-index-llms-openai | `0.6.13` | `0.6.21` |\n| llama-index-llms-openai-like | `0.5.3` | `0.6.0` |\n| llama-index-readers-file | `0.5.4` | `0.5.6` |\n| llama-index-readers-github | `0.8.2` | `0.10.0` |\n| llama-index-workflows | `2.12.0` | `2.14.2` |\n| [mistralai](https://github.com/mistralai/client-python) | `1.10.0` | `1.12.4` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.23.2` | `1.24.2` |\n| [openai](https://github.com/openai/openai-python) | `2.21.0` | `2.24.0` |\n| [openai-agents](https://github.com/openai/openai-agents-python) | `0.9.0` | `0.10.2` |\n| [transformers](https://github.com/huggingface/transformers) | `5.1.0` | `5.2.0` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.5.0` | `1.5.1` |\n| [faiss-cpu](https://github.com/kyamagu/faiss-wheels) | `1.8.0.post1` | `1.13.2` |\n| [pandas](https://github.com/pandas-dev/pandas) | `3.0.0` | `3.0.1` |\n| [pinecone](https://github.com/pinecone-io/pinecone-python-client) | `8.0.0` | `8.1.0` |\n| [pinecone-plugin-assistant](https://www.pinecone.io) | `3.0.1` | `3.0.2` |\n| [qdrant-client](https://github.com/qdrant/qdrant-client) | `1.16.2` | `1.17.0` |\n| [weaviate-client](https://github.com/weaviate/weaviate-python-client) | `4.19.2` | `4.20.1` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.38.2` |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.25.1` | `1.25.2` |\n| [boto3](https://github.com/boto/boto3) | `1.42.43` | `1.42.57` |\n| [botocore](https://github.com/boto/botocore) | `1.42.43` | `1.42.57` |\n| [google-cloud-aiplatform](https://github.com/googleapis/python-aiplatform) | `1.133.0` | `1.139.0` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.8.0` | `3.9.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.19` | `1.8.20` |\n| [ipython](https://github.com/ipython/ipython) | `9.9.0` | `9.10.0` |\n| [pip-tools](https://github.com/jazzband/pip-tools) | `7.5.2` | `7.5.3` |\n| [rich](https://github.com/Textualize/rich) | `14.2.0` | `14.3.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.1` | `0.15.4` |\n| [uv](https://github.com/astral-sh/uv) | `0.10.2` | `0.10.6` |\n| [sounddevice](https://github.com/spatialaudio/python-sounddevice) | `0.5.3` | `0.5.5` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.1.4` | `2026.2.25` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.129.0` | `0.133.1` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.12.0` | `2.13.1` |\n| [banks](https://github.com/masci/banks) | `2.3.0` | `2.4.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.5` | `4.14.3` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [docx2txt](https://github.com/ankushshah89/python-docx2txt) | `0.8` | `0.9` |\n| [ebooklib](https://github.com/aerkalov/ebooklib) | `0.18` | `0.20` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.3` | `3.24.3` |\n| [firecrawl-py](https://github.com/firecrawl/firecrawl) | `4.14.0` | `4.17.1` |\n| [gkeepapi](https://github.com/kiwiz/gkeepapi) | `0.15.1` | `0.17.1` |\n| [google-api-core[grpc]](https://github.com/googleapis/google-cloud-python) | `2.29.0` | `2.30.0` |\n| [google-api-python-client](https://github.com/googleapis/google-api-python-client) | `2.187.0` | `2.190.0` |\n| [google-auth-httplib2](https://github.com/GoogleCloudPlatform/google-auth-library-python-httplib2) | `0.2.1` | `0.3.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.1` | `3.3.2` |\n| [grpcio](https://github.com/grpc/grpc) | `1.75.0` | `1.78.0` |\n| [grpcio-status](https://grpc.io) | `1.71.2` | `1.78.0` |\n| [httpx-socks](https://github.com/romis2012/httpx-socks) | `0.10.1` | `0.11.0` |\n| llama-index-vector-stores-qdrant | `0.8.8` | `0.9.1` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.10.1` | `3.10.2` |\n| [ml-dtypes](https://github.com/jax-ml/ml_dtypes) | `0.4.1` | `0.5.4` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.0` |\n| [msal](https://github.com/AzureAD/microsoft-authentication-library-for-python) | `1.34.0` | `1.35.0` |\n| [opencv-python](https://github.com/opencv/opencv-python) | `4.11.0.86` | `4.13.0.92` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.5` | `0.8.6` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.5.1` | `4.9.2` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.41.5` | `2.42.0` |\n| [pyee](https://github.com/jfhbrook/pyee) | `13.0.0` | `13.0.1` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.7.2` | `6.7.3` |\n| [pyside6](https://pyside.org) | `6.9.1` | `6.10.2` |\n| [pyside6-addons](https://pyside.org) | `6.9.1` | `6.10.2` |\n| [pyside6-essentials](https://pyside.org) | `6.9.1` | `6.10.2` |\n| [python-markdown-math](https://github.com/mitya57/python-markdown-math) | `0.8` | `0.9` |\n| [python-socks](https://github.com/romis2012/python-socks) | `2.8.0` | `2.8.1` |\n| [qasync](https://github.com/CabbageDevelopment/qasync) | `0.27.1` | `0.28.0` |\n| [redisvl](https://github.com/redis/redis-vl-python) | `0.4.1` | `0.14.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.1.15` | `2026.2.19` |\n| [selenium](https://github.com/SeleniumHQ/Selenium) | `4.39.0` | `4.41.0` |\n| [shiboken6](https://pyside.org) | `6.9.1` | `6.10.2` |\n| [show-in-file-manager](https://github.com/damonlynch/showinfilemanager) | `1.1.5` | `1.1.6` |\n| [spider-client](https://github.com/spider-rs/spider-clients) | `0.0.27` | `0.1.85` |\n| [sqlalchemy[asyncio]](https://github.com/sqlalchemy/sqlalchemy) | `2.0.43` | `2.0.47` |\n| [striprtf](https://github.com/joshy/striprtf) | `0.0.26` | `0.0.29` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.3` | `9.1.4` |\n| [tinycss2](https://github.com/Kozea/tinycss2) | `1.4.0` | `1.5.1` |\n| [tinysegmenter](http://tinysegmenter.tuxfamily.org/) | `0.3` | `0.4` |\n| [trio](https://github.com/python-trio/trio) | `0.32.0` | `0.33.0` |\n| [typer](https://github.com/fastapi/typer) | `0.21.1` | `0.24.1` |\n| [urllib3[socks]](https://github.com/urllib3/urllib3) | `2.5.0` | `2.6.3` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.5.3` | `0.6.0` |\n| [xai-sdk](https://github.com/xai-org/xai-sdk-python) | `1.6.1` | `1.7.0` |\n\n\nUpdates `anthropic[bedrock,vertex]` from 0.76.0 to 0.84.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/releases\"\u003eanthropic[bedrock,vertex]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.84.0\u003c/h2\u003e\n\u003ch2\u003e0.84.0 (2026-02-25)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.83.0...v0.84.0\"\u003ev0.83.0...v0.84.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e change array_format to brackets (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/925d2ad6b76ad7c15de07b9b2768738775f71631\"\u003e925d2ad\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e remove publishing section from cli target (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/7bc7cebc68db70f08fce23e7e0b24acbc9ff37a7\"\u003e7bc7ceb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ehelpers:\u003c/strong\u003e add conversion helpers for MCP tools, prompts, and resources (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1383\"\u003e#1383\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/9489751386d1540bf80eff63ab47ca2b3cc18fa1\"\u003e9489751\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing raw jsonl results method (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/1009d4aca8be42973ca39104bc9bd8087f51ff9c\"\u003e1009d4a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e add request options to SSE classes (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4f4bc8e6241c2ccee8dfe4cdbc522081e3e30f08\"\u003e4f4bc8e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f7056e09411a45798a678be5766a7b7d6dcbc7a9\"\u003ef7056e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient to env (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/143efccfcc20c12f920b6ba242eff7c0feeea7c4\"\u003e143efcc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e simplify http snapshots (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1092\"\u003e#1092\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4a4dc9f6b36ab0224095790f4311c7f60c9845f7\"\u003e4a4dc9f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e update jsonl tests (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a8e6a6e5544b9f1626e3fb5faa31a1accfc81441\"\u003ea8e6a6e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erebrand to Claude SDK and streamline README (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/6b544058ab19e55e1c76a4ba9816205d1eedc630\"\u003e6b54405\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.83.0\u003c/h2\u003e\n\u003ch2\u003e0.83.0 (2026-02-19)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.82.0...v0.83.0\"\u003ev0.82.0...v0.83.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Add top-level cache control (automatic caching) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a940123da34ac33f0b6f20ce91807829451d1233\"\u003ea940123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate mock server docs (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/34ef48ceb0f1734d6b695890f689dc42eb0b004e\"\u003e34ef48c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.82.0\u003c/h2\u003e\n\u003ch2\u003e0.82.0 (2026-02-18)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.81.0...v0.82.0\"\u003ev0.81.0...v0.82.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e fix shared UserLocation and error code types (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/da3b931a2be768d77c228a4804d2f7f75caeb71c\"\u003eda3b931\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/anthropics/anthropic-sdk-python/blob/main/CHANGELOG.md\"\u003eanthropic[bedrock,vertex]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.84.0 (2026-02-25)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.83.0...v0.84.0\"\u003ev0.83.0...v0.84.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e change array_format to brackets (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/925d2ad6b76ad7c15de07b9b2768738775f71631\"\u003e925d2ad\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e remove publishing section from cli target (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/7bc7cebc68db70f08fce23e7e0b24acbc9ff37a7\"\u003e7bc7ceb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ehelpers:\u003c/strong\u003e add conversion helpers for MCP tools, prompts, and resources (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1383\"\u003e#1383\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/9489751386d1540bf80eff63ab47ca2b3cc18fa1\"\u003e9489751\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing raw jsonl results method (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/1009d4aca8be42973ca39104bc9bd8087f51ff9c\"\u003e1009d4a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e add request options to SSE classes (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4f4bc8e6241c2ccee8dfe4cdbc522081e3e30f08\"\u003e4f4bc8e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f7056e09411a45798a678be5766a7b7d6dcbc7a9\"\u003ef7056e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient to env (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/143efccfcc20c12f920b6ba242eff7c0feeea7c4\"\u003e143efcc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e simplify http snapshots (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1092\"\u003e#1092\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4a4dc9f6b36ab0224095790f4311c7f60c9845f7\"\u003e4a4dc9f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e update jsonl tests (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a8e6a6e5544b9f1626e3fb5faa31a1accfc81441\"\u003ea8e6a6e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erebrand to Claude SDK and streamline README (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/6b544058ab19e55e1c76a4ba9816205d1eedc630\"\u003e6b54405\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.83.0 (2026-02-19)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.82.0...v0.83.0\"\u003ev0.82.0...v0.83.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Add top-level cache control (automatic caching) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a940123da34ac33f0b6f20ce91807829451d1233\"\u003ea940123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate mock server docs (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/34ef48ceb0f1734d6b695890f689dc42eb0b004e\"\u003e34ef48c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.82.0 (2026-02-18)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.81.0...v0.82.0\"\u003ev0.81.0...v0.82.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e fix shared UserLocation and error code types (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/da3b931a2be768d77c228a4804d2f7f75caeb71c\"\u003eda3b931\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd backward-compat aliases for removed nested UserLocation classes (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1409\"\u003e#1409\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/56db1e3db6108e1c0f4e9363a5f23b54976dc877\"\u003e56db1e3\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/anthropics/anthropic-sdk-python/commit/49d639a671cb0ac30c767e8e1e68fdd5925205d5\"\u003e\u003ccode\u003e49d639a\u003c/code\u003e\u003c/a\u003e release: 0.84.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4d73b2159f7f3e88113a904f785de58ec4157045\"\u003e\u003ccode\u003e4d73b21\u003c/code\u003e\u003c/a\u003e feat(helpers): add conversion helpers for MCP tools, prompts, and resources (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/0e4092173fc52d773675f8e3a4ced6a5e2f67c9f\"\u003e\u003ccode\u003e0e40921\u003c/code\u003e\u003c/a\u003e docs: rebrand to Claude SDK and streamline README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/c3017a227c67377b862644feb463c0d8a1e9ddc9\"\u003e\u003ccode\u003ec3017a2\u003c/code\u003e\u003c/a\u003e chore(internal): simplify http snapshots (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1092\"\u003e#1092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/470fda9c14714117342c0491d6e436d158bbb4ab\"\u003e\u003ccode\u003e470fda9\u003c/code\u003e\u003c/a\u003e chore(internal): make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient to env\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/c30c72d710dea90437a73713296e76c12518c359\"\u003e\u003ccode\u003ec30c72d\u003c/code\u003e\u003c/a\u003e chore: add missing raw jsonl results method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/9d9a5a1aab3aa67c665c39bbeed3fec298fc2e6a\"\u003e\u003ccode\u003e9d9a5a1\u003c/code\u003e\u003c/a\u003e chore(internal):  make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/c28d2d50a5f5197839c36fb4741bee8cd1e976c1\"\u003e\u003ccode\u003ec28d2d5\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/bb13f1ea6be3941342115fdb125e3fe225252071\"\u003e\u003ccode\u003ebb13f1e\u003c/code\u003e\u003c/a\u003e chore(internal): add request options to SSE classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/ab0ccb990d098ef56c0367abcb0c745d7a58a99e\"\u003e\u003ccode\u003eab0ccb9\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.76.0...v0.84.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-genai` from 1.57.0 to 1.65.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-genai/releases\"\u003egoogle-genai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.65.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v1.64.0...v1.65.0\"\u003e1.65.0\u003c/a\u003e (2026-02-26)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd gemini-3.1-pro-preview to list of models in Interactions (\u003ca href=\"https://github.com/googleapis/python-genai/commit/fe86870752ca8cc66d140d3942e9b07f19ca092c\"\u003efe86870\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Image Grounding support to GoogleSearch tool (\u003ca href=\"https://github.com/googleapis/python-genai/commit/0035182ec4eaf1ce2503a09f290b1e48a2e1ee1f\"\u003e0035182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnable server side MCP and disable all other AFC when server side MCP is configured. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/4dd7b165dc54d3ae75367f68d05f9d9951688f54\"\u003e4dd7b16\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport more image sizes and resolutions (\u003ca href=\"https://github.com/googleapis/python-genai/commit/8b2a4e04707c86e5f7d46e0483a88457fbf6d533\"\u003e8b2a4e0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eChange interactions media mime type to enum (breaking change for experimental feature) (\u003ca href=\"https://github.com/googleapis/python-genai/commit/e0f33786f76a1af6ac3ad1938ab57961833bf0a1\"\u003ee0f3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle non-list response_stream in HttpResponse.json property (\u003ca href=\"https://github.com/googleapis/python-genai/commit/006042db8379d957ac1ac0e57993983a21f7e1d1\"\u003e006042d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle non-list response_stream in HttpResponse.json property (\u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/1903\"\u003e#1903\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-genai/commit/61aec3455e886a1c700fb0ba21ed40f59bba65ff\"\u003e61aec34\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake aiohttp an optional dependency, bump aiohttp version upperbound, and ensure HttpOptions.async_client_args propagates to custom aiohttp.ClientSession request args for proxy etc. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/b28d1445bb6c2c46c495ffd1b03a622d9d6942f6\"\u003eb28d144\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/2090\"\u003e#2090\u003c/a\u003e \u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/2051\"\u003e#2051\u003c/a\u003e \u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/1950\"\u003e#1950\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegenerate docs for 1.64.0 (\u003ca href=\"https://github.com/googleapis/python-genai/commit/a02314197d0dc72e854fa3ea79247f53421511ba\"\u003ea023141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate README and codegen_instructions for structured outputs (\u003ca href=\"https://github.com/googleapis/python-genai/commit/4d5a978932e9aacd2569f3058ce5af527ae18210\"\u003e4d5a978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.64.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v1.63.0...v1.64.0\"\u003e1.64.0\u003c/a\u003e (2026-02-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd UnifiedMetric support to Vertex Tuning evaluation config (\u003ca href=\"https://github.com/googleapis/python-genai/commit/9a9908a9605756a94404359187cad09b21c094e0\"\u003e9a9908a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport multimodal embedding for Gemini Embedding 2.0 and support MaaS models in Models.embed_content() (Vertex AI API) (\u003ca href=\"https://github.com/googleapis/python-genai/commit/af40cc629751b2d389eecb75741e9c3531cc8e6e\"\u003eaf40cc6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.63.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v1.62.0...v1.63.0\"\u003e1.63.0\u003c/a\u003e (2026-02-11)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd INCOMPLETE status to Interaction. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/1a84605bcac5445c8e13658b8bd7ff1860f10f1b\"\u003e1a84605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport encryption_spec in tuning job creation configuration for GenAI SDK (\u003ca href=\"https://github.com/googleapis/python-genai/commit/057d6f077b0a6d13c843fff0479027f5f7369113\"\u003e057d6f0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBase_url and global location parsing (\u003ca href=\"https://github.com/googleapis/python-genai/commit/2c40555c54267b1e9ba10dfafe1bc73f0cca43d4\"\u003e2c40555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove build warning due to extra comma: assertion on a tuple is always true (\u003ca href=\"https://github.com/googleapis/python-genai/commit/1cc2c2d411576e9858d4a4ae33bbf12975700a9f\"\u003e1cc2c2d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove debug print statement. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/60c0a2ffb4c1e87374c02958b1cb42748ba84ff1\"\u003e60c0a2f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unused import of \u003ccode\u003ewebsockets\u003c/code\u003e (\u003ca href=\"https://github.com/googleapis/python-genai/commit/3b82b5f382c6fe9fa820a59c3938d04cef3ae24e\"\u003e3b82b5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-genai/blob/main/CHANGELOG.md\"\u003egoogle-genai's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v1.64.0...v1.65.0\"\u003e1.65.0\u003c/a\u003e (2026-02-26)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd gemini-3.1-pro-preview to list of models in Interactions (\u003ca href=\"https://github.com/googleapis/python-genai/commit/fe86870752ca8cc66d140d3942e9b07f19ca092c\"\u003efe86870\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Image Grounding support to GoogleSearch tool (\u003ca href=\"https://github.com/googleapis/python-genai/commit/0035182ec4eaf1ce2503a09f290b1e48a2e1ee1f\"\u003e0035182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnable server side MCP and disable all other AFC when server side MCP is configured. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/4dd7b165dc54d3ae75367f68d05f9d9951688f54\"\u003e4dd7b16\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport more image sizes and resolutions (\u003ca href=\"https://github.com/googleapis/python-genai/commit/8b2a4e04707c86e5f7d46e0483a88457fbf6d533\"\u003e8b2a4e0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eChange interactions media mime type to enum (breaking change for experimental feature) (\u003ca href=\"https://github.com/googleapis/python-genai/commit/e0f33786f76a1af6ac3ad1938ab57961833bf0a1\"\u003ee0f3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle non-list response_stream in HttpResponse.json property (\u003ca href=\"https://github.com/googleapis/python-genai/commit/006042db8379d957ac1ac0e57993983a21f7e1d1\"\u003e006042d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle non-list response_stream in HttpResponse.json property (\u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/1903\"\u003e#1903\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-genai/commit/61aec3455e886a1c700fb0ba21ed40f59bba65ff\"\u003e61aec34\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake aiohttp an optional dependency, bump aiohttp version upperbound, and ensure HttpOptions.async_client_args propagates to custom aiohttp.ClientSession request args for proxy etc. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/b28d1445bb6c2c46c495ffd1b03a622d9d6942f6\"\u003eb28d144\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/2090\"\u003e#2090\u003c/a\u003e \u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/2051\"\u003e#2051\u003c/a\u003e \u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/1950\"\u003e#1950\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegenerate docs for 1.64.0 (\u003ca href=\"https://github.com/googleapis/python-genai/commit/a02314197d0dc72e854fa3ea79247f53421511ba\"\u003ea023141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate README and codegen_instructions for structured outputs (\u003ca href=\"https://github.com/googleapis/python-genai/commit/4d5a978932e9aacd2569f3058ce5af527ae18210\"\u003e4d5a978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v1.63.0...v1.64.0\"\u003e1.64.0\u003c/a\u003e (2026-02-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd UnifiedMetric support to Vertex Tuning evaluation config (\u003ca href=\"https://github.com/googleapis/python-genai/commit/9a9908a9605756a94404359187cad09b21c094e0\"\u003e9a9908a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport multimodal embedding for Gemini Embedding 2.0 and support MaaS models in Models.embed_content() (Vertex AI API) (\u003ca href=\"https://github.com/googleapis/python-genai/commit/af40cc629751b2d389eecb75741e9c3531cc8e6e\"\u003eaf40cc6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v1.62.0...v1.63.0\"\u003e1.63.0\u003c/a\u003e (2026-02-11)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd INCOMPLETE status to Interaction. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/1a84605bcac5445c8e13658b8bd7ff1860f10f1b\"\u003e1a84605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport encryption_spec in tuning job creation configuration for GenAI SDK (\u003ca href=\"https://github.com/googleapis/python-genai/commit/057d6f077b0a6d13c843fff0479027f5f7369113\"\u003e057d6f0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBase_url and global location parsing (\u003ca href=\"https://github.com/googleapis/python-genai/commit/2c40555c54267b1e9ba10dfafe1bc73f0cca43d4\"\u003e2c40555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove build warning due to extra comma: assertion on a tuple is always true (\u003ca href=\"https://github.com/googleapis/python-genai/commit/1cc2c2d411576e9858d4a4ae33bbf12975700a9f\"\u003e1cc2c2d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove debug print statement. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/60c0a2ffb4c1e87374c02958b1cb42748ba84ff1\"\u003e60c0a2f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unused import of \u003ccode\u003ewebsockets\u003c/code\u003e (\u003ca href=\"https://github.com/googleapis/python-genai/commit/3b82b5f382c6fe9fa820a59c3938d04cef3ae24e\"\u003e3b82b5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/b2be5018adce18598badacfbbe7a4c0139be3a16\"\u003e\u003ccode\u003eb2be501\u003c/code\u003e\u003c/a\u003e chore(main): release 1.65.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/2075\"\u003e#2075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/7028a9c691439b559de1b75ab2717f522c8f4e24\"\u003e\u003ccode\u003e7028a9c\u003c/code\u003e\u003c/a\u003e chore: update InteractionCompleteEvent comment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/0035182ec4eaf1ce2503a09f290b1e48a2e1ee1f\"\u003e\u003ccode\u003e0035182\u003c/code\u003e\u003c/a\u003e feat: Add Image Grounding support to GoogleSearch tool\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/8b2a4e04707c86e5f7d46e0483a88457fbf6d533\"\u003e\u003ccode\u003e8b2a4e0\u003c/code\u003e\u003c/a\u003e feat: Support more image sizes and resolutions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/b28d1445bb6c2c46c495ffd1b03a622d9d6942f6\"\u003e\u003ccode\u003eb28d144\u003c/code\u003e\u003c/a\u003e fix: Make aiohttp an optional dependency, bump aiohttp version upperbound, an...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/c04c4891f7d54cdedc525bf4f42f29fb1a4eae1b\"\u003e\u003ccode\u003ec04c489\u003c/code\u003e\u003c/a\u003e chore: Improve error message for missing API key.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/af94e536ab606d1795ad90e0c8eeb9c2a850ce6b\"\u003e\u003ccode\u003eaf94e53\u003c/code\u003e\u003c/a\u003e chore: Update comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/006042db8379d957ac1ac0e57993983a21f7e1d1\"\u003e\u003ccode\u003e006042d\u003c/code\u003e\u003c/a\u003e Copybara import of the project:\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/ecfa90cab3cf76357996048aa9928bf8055030bf\"\u003e\u003ccode\u003eecfa90c\u003c/code\u003e\u003c/a\u003e chore: internal change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/61aec3455e886a1c700fb0ba21ed40f59bba65ff\"\u003e\u003ccode\u003e61aec34\u003c/code\u003e\u003c/a\u003e fix: handle non-list response_stream in HttpResponse.json property (\u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/1903\"\u003e#1903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-genai/compare/v1.57.0...v1.65.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `huggingface-hub` from 1.4.1 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/huggingface_hub/releases\"\u003ehuggingface-hub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[v1.5.0]: Buckets API, Agent-first CLI, Spaces Hot-Reload and more\u003c/h2\u003e\n\u003cp\u003eThis release introduces major new features including \u003cstrong\u003eBuckets\u003c/strong\u003e (xet-based large scale object storage), CLI Extensions, Space Hot-Reload, and significant improvements for AI coding agents. The CLI has been completely overhauled with centralized error handling, better help output, and new commands for collections, papers, and more.\u003c/p\u003e\n\u003ch2\u003e🪣 Buckets: S3-like Object Storage on the Hub\u003c/h2\u003e\n\u003cp\u003eBuckets provide S3-like object storage on Hugging Face, powered by the Xet storage backend. Unlike repositories (which are git-based and track file history), buckets are remote object storage containers designed for large-scale files with content-addressable deduplication. Use them for training checkpoints, logs, intermediate artifacts, or any large collection of files that doesn't need version control.\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003e# Create a bucket\r\nhf buckets create my-bucket --private\r\n\u003ch1\u003eUpload a directory\u003c/h1\u003e\n\u003cp\u003ehf buckets sync ./data hf://buckets/username/my-bucket\u003c/p\u003e\n\u003ch1\u003eDownload from bucket\u003c/h1\u003e\n\u003cp\u003ehf buckets sync hf://buckets/username/my-bucket ./data\u003c/p\u003e\n\u003ch1\u003eList files\u003c/h1\u003e\n\u003cp\u003ehf buckets list username/my-bucket -R --tree\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eThe Buckets API includes full CLI and Python support for creating, listing, moving, and deleting buckets; uploading, downloading, and syncing files; and managing bucket contents with include/exclude patterns.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBuckets API and CLI by \u003ca href=\"https://github.com/Wauplin\"\u003e\u003ccode\u003e@​Wauplin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3673\"\u003e#3673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport bucket rename/move in API + CLI by \u003ca href=\"https://github.com/Wauplin\"\u003e\u003ccode\u003e@​Wauplin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3843\"\u003e#3843\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd 'sync_bucket' to HfApi by \u003ca href=\"https://github.com/Wauplin\"\u003e\u003ccode\u003e@​Wauplin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3845\"\u003e#3845\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ehf buckets file deletion by \u003ca href=\"https://github.com/Wauplin\"\u003e\u003ccode\u003e@​Wauplin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3849\"\u003e#3849\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate message when no buckets found by \u003ca href=\"https://github.com/Wauplin\"\u003e\u003ccode\u003e@​Wauplin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3850\"\u003e#3850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuckets doc \u003ccode\u003ehf\u003c/code\u003e install by \u003ca href=\"https://github.com/julien-c\"\u003e\u003ccode\u003e@​julien-c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3846\"\u003e#3846\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e📚 \u003cstrong\u003eDocumentation:\u003c/strong\u003e \u003ca href=\"https://huggingface.co/docs/huggingface_hub/main/en/guides/buckets\"\u003eBuckets guide\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e🤖 AI Agent Support\u003c/h2\u003e\n\u003cp\u003eThis release includes several features designed to improve the experience for AI coding agents (Claude Code, OpenCode, Cursor, etc.):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCentralized CLI error handling\u003c/strong\u003e: Clean user-facing messages without tracebacks (set \u003ccode\u003eHF_DEBUG=1\u003c/code\u003e for full traces) by \u003ca href=\"https://github.com/hanouticelina\"\u003e\u003ccode\u003e@​hanouticelina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3754\"\u003e#3754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eToken-efficient skill\u003c/strong\u003e: The \u003ccode\u003ehf skills add\u003c/code\u003e command now installs a compact skill (~1.2k tokens vs ~12k before) by \u003ca href=\"https://github.com/hanouticelina\"\u003e\u003ccode\u003e@​hanouticelina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3802\"\u003e#3802\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAgent-friendly \u003ccode\u003ehf jobs logs\u003c/code\u003e\u003c/strong\u003e: Prints available logs and exits by default; use \u003ccode\u003e-f\u003c/code\u003e to stream by \u003ca href=\"https://github.com/davanstrien\"\u003e\u003ccode\u003e@​davanstrien\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3783\"\u003e#3783\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAdd AGENTS.md\u003c/strong\u003e: Dev setup and codebase guide for AI agents by \u003ca href=\"https://github.com/Wauplin\"\u003e\u003ccode\u003e@​Wauplin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3789\"\u003e#3789\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003e# Install the hf-cli skill for Claude\r\nhf skills add --claude\r\n\u003ch1\u003eInstall for project-level\u003c/h1\u003e\n\u003cp\u003ehf skills add --project\n\u003c/code\u003e\u003c/pre\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/huggingface/huggingface_hub/commit/2b2072642d8e021ecbd119f2489a54f6709f8b16\"\u003e\u003ccode\u003e2b20726\u003c/code\u003e\u003c/a\u003e Release: v1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/da368798cbd07a9e56f64689c3e998e95100d66c\"\u003e\u003ccode\u003eda36879\u003c/code\u003e\u003c/a\u003e Remove bucket warning in docs (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3854\"\u003e#3854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/ee2dd7f5f547c4ee4752a99c8f7cb361857713f6\"\u003e\u003ccode\u003eee2dd7f\u003c/code\u003e\u003c/a\u003e Release: v1.5.0.rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/a5284dcb226a85491ba4cc9e5a99484322afcaca\"\u003e\u003ccode\u003ea5284dc\u003c/code\u003e\u003c/a\u003e Add test for check if dataclass.repr=True before wrapping (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3852\"\u003e#3852\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/b89a805d2a2e2e1d381a0b4322374caefa168a8b\"\u003e\u003ccode\u003eb89a805\u003c/code\u003e\u003c/a\u003e check if \u003ccode\u003erepr=True\u003c/code\u003e before wrapping (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3823\"\u003e#3823\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/2656107690782d2a9af4b6f5435f86c16f4e504c\"\u003e\u003ccode\u003e2656107\u003c/code\u003e\u003c/a\u003e Hf buckets file deletion (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3849\"\u003e#3849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/f100f04062fa5f3a80160a8b01f5220451b21d8a\"\u003e\u003ccode\u003ef100f04\u003c/code\u003e\u003c/a\u003e Buckets list empty message (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3850\"\u003e#3850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/41896bbd384e88e89e1f56253be9c4d3a553fb47\"\u003e\u003ccode\u003e41896bb\u003c/code\u003e\u003c/a\u003e [CLI] Migrate to 'hf repos' instead of 'hf repo' for consistency (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3848\"\u003e#3848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/25a3bbe2ef9b5611080a0a5ae5b31b50cd0027e0\"\u003e\u003ccode\u003e25a3bbe\u003c/code\u003e\u003c/a\u003e [Bucket] Add 'sync_bucket' to HfApi (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3845\"\u003e#3845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/2f1229897bf74b17e1af82503c7b4919a8366aef\"\u003e\u003ccode\u003e2f12298\u003c/code\u003e\u003c/a\u003e [Bucket] Support bucket rename/move in API + CLI (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3843\"\u003e#3843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/huggingface_hub/compare/v1.4.1...v1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index` from 0.14.14 to 0.14.15\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/releases\"\u003ellama-index's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.15\u003c/h2\u003e\n\u003ch1\u003eRelease Notes\u003c/h1\u003e\n\u003ch2\u003e[2026-02-18]\u003c/h2\u003e\n\u003ch3\u003ellama-index-agent-agentmesh [0.1.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[Integration] AgentMesh: Trust Layer for LlamaIndex Agents (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20644\"\u003e#20644\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-core [0.14.15]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport basic operations for multimodal types (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20640\"\u003e#20640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat recursive llm type support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20642\"\u003e#20642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: remove redundant metadata_seperator field from TextNode (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20649\"\u003e#20649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): update mock prompt type in mock_prompts.py (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20661\"\u003e#20661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal template var formatting (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20682\"\u003e#20682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal prompt templates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20683\"\u003e#20683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal chat prompt helper (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20684\"\u003e#20684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eensure at least one message/content block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-ibm [0.6.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.9]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSonnet 4-6 addition (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20723\"\u003e#20723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.12.10]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(bedrock-converse): ensure thinking_delta is populated in all chat modes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20664\"\u003e#20664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(bedrock-converse): Add support for Claude Sonnet 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20726\"\u003e#20726\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-ibm [0.7.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-mistralai [0.10.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRrubini/mistral azure sdk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20668\"\u003e#20668\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-oci-data-science [1.0.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for new OCI DataScience endpoint /predictWithStream for streaming use case (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20545\"\u003e#20545\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-observability-otel [0.3.0]\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/run-llama/llama_index/blob/main/CHANGELOG.md\"\u003ellama-index's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003ellama-index-core [0.14.15]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport basic operations for multimodal types (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20640\"\u003e#20640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat recursive llm type support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20642\"\u003e#20642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: remove redundant metadata_seperator field from TextNode (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20649\"\u003e#20649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): update mock prompt type in mock_prompts.py (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20661\"\u003e#20661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal template var formatting (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20682\"\u003e#20682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal prompt templates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20683\"\u003e#20683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal chat prompt helper (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20684\"\u003e#20684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eensure at least one message/content block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-ibm [0.6.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.9]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSonnet 4-6 addition (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20723\"\u003e#20723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.12.10]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(bedrock-converse): ensure thinking_delta is populated in all chat modes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20664\"\u003e#20664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(bedrock-converse): Add support for Claude Sonnet 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20726\"\u003e#20726\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-ibm [0.7.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-mistralai [0.10.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRrubini/mistral azure sdk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20668\"\u003e#20668\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-oci-data-science [1.0.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for new OCI DataScience endpoint /predictWithStream for streaming use case (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20545\"\u003e#20545\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-observability-otel [0.3.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eimprove otel data serialization by flattening dicts (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20719\"\u003e#20719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: support custom span processor; refactor: use llama-index-instrumentation instead of llama-index-core (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20732\"\u003e#20732\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-program-evaporate [0.5.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSandbox LLM-generated code execution in EvaporateExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20676\"\u003e#20676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-readers-bitbucket [0.4.2]\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/4937fc017cbf91d08c6beaadb790ae44745a87a1\"\u003e\u003ccode\u003e4937fc0\u003c/code\u003e\u003c/a\u003e Release 0.14.15 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20735\"\u003e#20735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/98698936ec2cccaf8eb78018176d6d6da8daaee2\"\u003e\u003ccode\u003e9869893\u003c/code\u003e\u003c/a\u003e feat(bedrock-converse): Add support for Nova 2 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20736\"\u003e#20736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/40da24454784980dd4d27135533a1fff779d6929\"\u003e\u003ccode\u003e40da244\u003c/code\u003e\u003c/a\u003e fix(layoutir): restrict requires-python to \u0026gt;=3.12 to match layoutir dependenc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/6504188504a5070b43bb0d4633f000e129f51f87\"\u003e\u003ccode\u003e6504188\u003c/code\u003e\u003c/a\u003e feat: support custom span processor; refactor: use llama-index-instrumentatio...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/dc716d159cf93c60dca31e2abaca1166877216a2\"\u003e\u003ccode\u003edc716d1\u003c/code\u003e\u003c/a\u003e chore: update issue classifier action to v0.2.0 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20734\"\u003e#20734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/6d0aff422db769014e384242f7a2130015d71fa5\"\u003e\u003ccode\u003e6d0aff4\u003c/code\u003e\u003c/a\u003e ensure at least one message/conent block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/fdcc72cc362e033a45db52af52be15dad2bab472\"\u003e\u003ccode\u003efdcc72c\u003c/code\u003e\u003c/a\u003e feat: add issue classifier gh action (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20720\"\u003e#20720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/171ae830ad98c22cc69afa043678340536bc7dbe\"\u003e\u003ccode\u003e171ae83\u003c/code\u003e\u003c/a\u003e fix: Update WhatsAppChatLoader to retrieve DataFrame in pandas format (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20722\"\u003e#20722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/68c760a50d29844f96e56e189e91c676e6445bf9\"\u003e\u003ccode\u003e68c760a\u003c/code\u003e\u003c/a\u003e fix(layoutir): hotfix for output_dir crash and Block extraction (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20708\"\u003e#20708\u003c/a\u003e follo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/83f45ce5fcdd3a96c587ab3f86e527addda621f0\"\u003e\u003ccode\u003e83f45ce\u003c/code\u003e\u003c/a\u003e Add retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/run-llama/llama_index/compare/v0.14.14...v0.14.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-core` from 0.14.14 to 0.14.15\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/releases\"\u003ellama-index-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.15\u003c/h2\u003e\n\u003ch1\u003eRelease Notes\u003c/h1\u003e\n\u003ch2\u003e[2026-02-18]\u003c/h2\u003e\n\u003ch3\u003ellama-index-agent-agentmesh [0.1.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[Integration] AgentMesh: Trust Layer for LlamaIndex Agents (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20644\"\u003e#20644\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-core [0.14.15]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport basic operations for multimodal types (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20640\"\u003e#20640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat recursive llm type support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20642\"\u003e#20642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: remove redundant metadata_seperator field from TextNode (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20649\"\u003e#20649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): update mock prompt type in mock_prompts.py (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20661\"\u003e#20661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal template var formatting (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20682\"\u003e#20682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal prompt templates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20683\"\u003e#20683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal chat prompt helper (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20684\"\u003e#20684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eensure at least one message/content block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-ibm [0.6.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.9]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSonnet 4-6 addition (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20723\"\u003e#20723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.12.10]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(bedrock-converse): ensure thinking_delta is populated in all chat modes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20664\"\u003e#20664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(bedrock-converse): Add support for Claude Sonnet 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20726\"\u003e#20726\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-ibm [0.7.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-mistralai [0.10.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRrubini/mistral azure sdk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20668\"\u003e#20668\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-oci-data-science [1.0.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for new OCI DataScience endpoint /predictWithStream for streaming use case (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20545\"\u003e#20545\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-observability-otel [0.3.0]\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/run-llama/llama_index/blob/main/CHANGELOG.md\"\u003ellama-index-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003ellama-index-core [0.14.15]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport basic operations for multimodal types (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20640\"\u003e#20640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat recursive llm type support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20642\"\u003e#20642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: remove redundant metadata_seperator field from TextNode (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20649\"\u003e#20649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): update mock prompt type in mock_prompts.py (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20661\"\u003e#20661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal template var formatting (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20682\"\u003e#20682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal prompt templates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20683\"\u003e#20683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal chat prompt helper (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20684\"\u003e#20684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eensure at least one message/content block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-ibm [0.6.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.9]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSonnet 4-6 addition (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20723\"\u003e#20723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.12.10]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(bedrock-converse): ensure thinking_delta is populated in all chat modes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20664\"\u003e#20664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(bedrock-converse): Add support for Claude Sonnet 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20726\"\u003e#20726\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-ibm [0.7.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-mistralai [0.10.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRrubini/mistral azure sdk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20668\"\u003e#20668\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-oci-data-science [1.0.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for new OCI DataScience endpoint /predictWithStream for streaming use case (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20545\"\u003e#20545\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-observability-otel [0.3.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eimprove otel data serialization by flattening dicts (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20719\"\u003e#20719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: support custom span processor; refactor: use llama-index-instrumentation instead of llama-index-core (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20732\"\u003e#20732\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-program-evaporate [0.5.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSandbox LLM-generated code execution in EvaporateExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20676\"\u003e#20676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-readers-bitbucket [0.4.2]\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/4937fc017cbf91d08c6beaadb790ae44745a87a1\"\u003e\u003ccode\u003e4937fc0\u003c/code\u003e\u003c/a\u003e Release 0.14.15 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20735\"\u003e#20735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/98698936ec2cccaf8eb78018176d6d6da8daaee2\"\u003e\u003ccode\u003e9869893\u003c/code\u003e\u003c/a\u003e feat(bedrock-converse): Add support for Nova 2 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20736\"\u003e#20736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/40da24454784980dd4d27135533a1fff779d6929\"\u003e\u003ccode\u003e40da244\u003c/code\u003e\u003c/a\u003e fix(layoutir): restrict requires-python to \u0026gt;=3.12 to match layoutir dependenc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/6504188504a5070b43bb0d4633f000e129f51f87\"\u003e\u003ccode\u003e6504188\u003c/code\u003e\u003c/a\u003e feat: support custom span processor; refactor: use llama-index-instrumentatio...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/dc716d159cf93c60dca31e2abaca1166877216a2\"\u003e\u003ccode\u003edc716d1\u003c/code\u003e\u003c/a\u003e chore: update issue classifier action to v0.2.0 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20734\"\u003e#20734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/6d0aff422db769014e384242f7a2130015d71fa5\"\u003e\u003ccode\u003e6d0aff4\u003c/code\u003e\u003c/a\u003e ensure at least one message/conent block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/fdcc72cc362e033a45db52af52be15dad2bab472\"\u003e\u003ccode\u003efdcc72c\u003c/code\u003e\u003c/a\u003e feat: add issue classifier gh action (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20720\"\u003e#20720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/171ae830ad98c22cc69afa043678340536bc7dbe\"\u003e\u003ccode\u003e171ae83\u003c/code\u003e\u003c/a\u003e fix: Update WhatsAppChatLoader to retrieve DataFrame in pandas format (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20722\"\u003e#20722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/68c760a50d29844f96e56e189e91c676e6445bf9\"\u003e\u003ccode\u003e68c760a\u003c/code\u003e\u003c/a\u003e fix(layoutir): hotfix for output_dir crash and Block extraction (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20708\"\u003e#20708\u003c/a\u003e follo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/83f45ce5fcdd3a96c587ab3f86e527addda621f0\"\u003e\u003ccode\u003e83f45ce\u003c/code\u003e\u003c/a\u003e Add retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/run-llama/llama_index/compare/v0.14.14...v0.14.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-embeddings-gemini` from 0.4.1 to 0.4.2\n\nUpdates `llama-index-llms-anthropic` from 0.10.5 to 0.10.10\n\nUpdates `llama-index-llms-gemini` from 0.6.1 to 0.6.2\n\nUpdates `llama-index-llms-google-genai` from 0.8.3 to 0.8.7\n\nUpdates `llama-index-llms-huggingface-api` from 0.6.1 to 0.6.2\n\nUpdates `llama-index-llms-mistralai` from 0.9.0 to 0.10.0.post2\n\nUpdates `llama-index-llms-openai` from 0.6.13 to 0.6.21\n\nUpdates `llama-index-llms-openai-like` from 0.5.3 to 0.6.0\n\nUpdates `llama-index-readers-file` from 0.5.4 to 0.5.6\n\nUpdates `llama-index-readers-github` from 0.8.2 to 0.10.0\n\nUpdates `llama-index-workflows` from 2.12.0 to 2.14.2\n\nUpdates `mistralai` from 1.10.0 to 1.12.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mistralai/client-python/releases\"\u003emistralai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epython - v1.12.4 - 2026-02-20 17:54:29\u003c/h2\u003e\n\u003ch1\u003eGenerated by Speakeasy CLI\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://pypi.org/project/mistralai/1.12.4\"\u003emistralai 1.12.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePython SDK Changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.conversations.start()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.inputs.[array].[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.conversations.list()\u003c/code\u003e:  \u003ccode\u003eresponse.[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.conversations.get()\u003c/code\u003e:  \u003ccode\u003eresponse\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.conversations.append()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.inputs.[array].[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.conversations.get_history()\u003c/code\u003e:  \u003ccode\u003eresponse\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.conversations.get_messages()\u003c/code\u003e:  \u003ccode\u003eresponse\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.conversations.restart()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.inputs.[array].[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.conversations.start_stream()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.inputs.[array].[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse.[].data\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.conversations.append_stream()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.inputs.[array].[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse.[].data\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.conversations.restart_stream()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.inputs.[array].[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse.[].data\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.agents.create()\u003c/code\u003e:  \u003ccode\u003eresponse.object\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.agents.list()\u003c/code\u003e:  \u003ccode\u003eresponse.[].object\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.agents.get()\u003c/code\u003e:  \u003ccode\u003eresponse.object\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.agents.update()\u003c/code\u003e:  \u003ccode\u003eresponse.object\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.agents.update_version()\u003c/code\u003e:  \u003ccode\u003eresponse.object\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.agents.list_versions()\u003c/code\u003e:  \u003ccode\u003eresponse.[].object\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.agents.get_version()\u003c/code\u003e:  \u003ccode\u003eresponse.object\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.chat.complete()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.messages.[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse.choices.[].message\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.chat.stream()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.messages.[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse.[].data.choices.[].delta.content.[array].[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.fim.complete()\u003c/code\u003e:  \u003ccode\u003eresponse.choices.[].message\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.fim.stream()\u003c/code\u003e:  \u003ccode\u003eresponse.[].data.choices.[].delta.content.[array].[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.agents.complete()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.messages.[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse.choices.[].message\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.agents.stream()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.messages.[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse.[].data.choices.[].delta.content.[array].[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.classifiers.moderate_chat()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.inputs.[array].[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.classifiers.classify_chat()\u003c/code\u003e:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mistralai/client-python/blob/v1.12.4/RELEASES.md\"\u003emistralai's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2024-08-07 14:25:13\u003c/h2\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cp\u003eBased on:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOpenAPI Doc\u003c/li\u003e\n\u003cli\u003eSpeakeasy CLI 1.356.0 (2.388.1) \u003ca href=\"https://github.com/speakeasy-api/speakeasy\"\u003ehttps://github.com/speakeasy-api/speakeasy\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eGenerated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[python v1.0.0] .\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eReleases\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[PyPI v1.0.0] \u003ca href=\"https://pypi.org/project/mistralai/1.0.0\"\u003ehttps://pypi.org/project/mistralai/1.0.0\u003c/a\u003e - .\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024-08-08 18:12:16\u003c/h2\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cp\u003eBased on:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOpenAPI Doc\u003c/li\u003e\n\u003cli\u003eSpeakeasy CLI 1.357.4 (2.390.6) \u003ca href=\"https://github.com/speakeasy-api/speakeasy\"\u003ehttps://github.com/speakeasy-api/speakeasy\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eGenerated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[python v1.0.1] .\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eReleases\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[PyPI v1.0.1] \u003ca href=\"https://pypi.org/project/mistralai/1.0.1\"\u003ehttps://pypi.org/project/mistralai/1.0.1\u003c/a\u003e - .\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024-08-20 08:36:28\u003c/h2\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cp\u003eBased on:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOpenAPI Doc\u003c/li\u003e\n\u003cli\u003eSpeakeasy CLI 1.376.0 (2.402.5) \u003ca href=\"https://github.com/speakeasy-api/speakeasy\"\u003ehttps://github.com/speakeasy-api/speakeasy\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eGenerated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[python v1.0.2] .\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eReleases\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[PyPI v1.0.2] \u003ca href=\"https://pypi.org/project/mistralai/1.0.2\"\u003ehttps://pypi.org/project/mistralai/1.0.2\u003c/a\u003e - .\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024-08-29 09:09:05\u003c/h2\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cp\u003eBased on:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOpenAPI Doc\u003c/li\u003e\n\u003cli\u003eSpeakeasy CLI 1.382.0 (2.404.11) \u003ca href=\"https://github.com/speakeasy-api/speakeasy\"\u003ehttps://github.com/speakeasy-api/speakeasy\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eGenerated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[python v1.0.3] .\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eReleases\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[PyPI v1.0.3] \u003ca href=\"https://pypi.org/project/mistralai/1.0.3\"\u003ehttps://pypi.org/project/mistralai/1.0.3\u003c/a\u003e - .\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024-09-13 16:21:24\u003c/h2\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cp\u003eBased on:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOpenAPI Doc\u003c/li\u003e\n\u003cli\u003eSpeakeasy CLI 1.396.7 (2.415.6) \u003ca href=\"https://github.com/speakeasy-api/speakeasy\"\u003ehttps://github.com/speakeasy-api/speakeasy\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eGenerated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[python v1.1.0] .\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eReleases\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mistralai/client-python/commit/c3f22d3c9bf7697f234872e34544eb6f9cdf3feb\"\u003e\u003ccode\u003ec3f22d3\u003c/code\u003e\u003c/a\u003e fix: change constFieldCasing from upper to normal (\u003ca href=\"https://redirect.github.com/mistralai/client-python/issues/361\"\u003e#361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mistralai/client-python/commit/2b8a1268c98a2cf0d4aadc2ea5b71e7dbbbbb180\"\u003e\u003ccode\u003e2b8a126\u003c/code\u003e\u003c/a\u003e fix (\u003ca href=\"https://redirect.github.com/mistralai/client-python/issues/356\"\u003e#356\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mistralai/client-python/commit/25d4457ba0d6b020b133c7823f1f1efc79094ec4\"\u003e\u003ccode\u003e25d4457\u003c/code\u003e\u003c/a\u003e feat(audio): add PyAudio initialization check and error handling (\u003ca href=\"https://redirect...\n\n_Description has been truncated_","html_url":"https://github.com/DylanLRPollock/Monkey-Head-Project/pull/478","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/DylanLRPollock%2FMonkey-Head-Project/issues/478","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/478/packages"},{"uuid":"3970367666","node_id":"PR_kwDOQjesjs7FQnU9","number":43,"state":"closed","title":"Bump trio from 0.32.0 to 0.33.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-21T18:10:48.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-20T21:04:34.000Z","updated_at":"2026-02-21T18:10:49.000Z","time_to_close":75974,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"trio","old_version":"0.32.0","new_version":"0.33.0","repository_url":"https://github.com/python-trio/trio"}],"path":null,"ecosystem":"pip"},"body":"Bumps [trio](https://github.com/python-trio/trio) from 0.32.0 to 0.33.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.33.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.32.0...v0.33.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.32.0...v0.33.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStart supporting Android's new \u003ccode\u003e\u0026quot;android\u0026quot;\u003c/code\u003e \u003ccode\u003esys.platform\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3357\"\u003epython-trio/trio#3357\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBoth \u003ccode\u003etrio.testing.RaisesGroup\u003c/code\u003e and \u003ccode\u003etrio.testing.Matcher\u003c/code\u003e have been deprecated. Pytest alternatives \u003ccode\u003epytest.RaisesGroup\u003c/code\u003e and \u003ccode\u003epytest.RaisesExc\u003c/code\u003e (respectively) are considered correct replacement. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3326\"\u003epython-trio/trio#3326\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/python-trio/trio/commit/3073f0c2108bad83c27dda6c83474a9b8ce4a957\"\u003e\u003ccode\u003e3073f0c\u003c/code\u003e\u003c/a\u003e Bump version to 0.33.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c21654b5f8375c5104625e6748492913cdb9d304\"\u003e\u003ccode\u003ec21654b\u003c/code\u003e\u003c/a\u003e Bump dependencies from commit 694044 (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3391\"\u003e#3391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/69404459f8eb0f7c4ca1433174fa0f5e9bad38ff\"\u003e\u003ccode\u003e6940445\u003c/code\u003e\u003c/a\u003e Documentation search improvements (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/e27a303941ae2bf63f2d2556b387e06262aa91f9\"\u003e\u003ccode\u003ee27a303\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3384\"\u003e#3384\u003c/a\u003e from A5rocks/update-sphinx\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/93b989b36befc55c5bded3f51a82a00a2aca37e8\"\u003e\u003ccode\u003e93b989b\u003c/code\u003e\u003c/a\u003e Add coredis and streaQ libraries to documentation (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3389\"\u003e#3389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/bc94ce138fa81f460f0d65f38a03cf3db04e6fe3\"\u003e\u003ccode\u003ebc94ce1\u003c/code\u003e\u003c/a\u003e Add coredis and streaQ libraries to documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/1ee96c8d84718cf32ef607a08b9069c8c2cdcc9f\"\u003e\u003ccode\u003e1ee96c8\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3387\"\u003e#3387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/95d92051c5acf71d717c77c7c996d4d0db3ab952\"\u003e\u003ccode\u003e95d9205\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3386\"\u003e#3386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/21250b16b52826ca1b6a38a8f08ecd40974c2c22\"\u003e\u003ccode\u003e21250b1\u003c/code\u003e\u003c/a\u003e Update to Sphinx 9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/4a9c6db4dd1a30bda74a08cf1e9a24c4777d9471\"\u003e\u003ccode\u003e4a9c6db\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3382\"\u003e#3382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/compare/v0.32.0...v0.33.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trio\u0026package-manager=pip\u0026previous-version=0.32.0\u0026new-version=0.33.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/adcaudill/yawast-ng/pull/43","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/adcaudill%2Fyawast-ng/issues/43","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/43/packages"},{"uuid":"3828704907","node_id":"PR_kwDOQTBUns699LFr","number":269,"state":"closed","title":"deps(core)(deps): bump the minor-patches-catch-all group across 1 directory with 25 updates","user":"dependabot[bot]","labels":["priority-low","area-etl","dependencies","python","type-infra","python-core"],"assignees":["prototyp33"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-26T08:41:51.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-19T09:03:08.000Z","updated_at":"2026-01-26T08:41:52.000Z","time_to_close":603523,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(core)(deps): bump","group_name":"minor-patches-catch-all","update_count":25,"packages":[{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"soupsieve","old_version":"2.6","new_version":"2.8.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"itemadapter","old_version":"0.12.2","new_version":"0.13.1","repository_url":"https://github.com/scrapy/itemadapter"},{"name":"tldextract","old_version":"5.3.0","new_version":"5.3.1","repository_url":"https://github.com/john-kurkowski/tldextract"},{"name":"selenium","old_version":"4.29.0","new_version":"4.40.0","repository_url":"https://github.com/SeleniumHQ/Selenium"},{"name":"cachetools","old_version":"6.2.3","new_version":"6.2.4","repository_url":"https://github.com/tkem/cachetools"},{"name":"filelock","old_version":"3.20.0","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"trio","old_version":"0.29.0","new_version":"0.32.0","repository_url":"https://github.com/python-trio/trio"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"wsproto","old_version":"1.2.0","new_version":"1.3.2","repository_url":"https://github.com/python-hyper/wsproto"},{"name":"jsonschema","old_version":"4.25.1","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"pyasn1","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pillow","old_version":"12.0.0","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"pyparsing","old_version":"3.2.5","new_version":"3.3.1","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"gitpython","old_version":"3.1.45","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"tornado","old_version":"6.5.3","new_version":"6.5.4","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"narwhals","old_version":"2.13.0","new_version":"2.15.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"zope-interface","old_version":"8.1.1","new_version":"8.2","repository_url":"https://github.com/zopefoundation/zope.interface"},{"name":"protobuf","old_version":"6.33.2","new_version":"6.33.4","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"zeep","old_version":"4.2.1","new_version":"4.3.2","repository_url":"https://github.com/mvantellingen/python-zeep"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-patches-catch-all group with 25 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.6` | `2.8.2` |\n| [itemadapter](https://github.com/scrapy/itemadapter) | `0.12.2` | `0.13.1` |\n| [tldextract](https://github.com/john-kurkowski/tldextract) | `5.3.0` | `5.3.1` |\n| [selenium](https://github.com/SeleniumHQ/Selenium) | `4.29.0` | `4.40.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `6.2.3` | `6.2.4` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.0` | `3.20.3` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [trio](https://github.com/python-trio/trio) | `0.29.0` | `0.32.0` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [wsproto](https://github.com/python-hyper/wsproto) | `1.2.0` | `1.3.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.1` | `4.26.0` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.1` | `0.6.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.0.0` | `12.1.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.5` | `3.3.1` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.45` | `3.1.46` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.3` | `6.5.4` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.13.0` | `2.15.0` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `8.1.1` | `8.2` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.33.2` | `6.33.4` |\n| [zeep](https://github.com/mvantellingen/python-zeep) | `4.2.1` | `4.3.2` |\n\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.4\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.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\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.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\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/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `soupsieve` from 2.6 to 2.8.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/soupsieve/releases\"\u003esoupsieve's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Ensure custom selectors or namespace dictionaries reject non-string keys (\u003ca href=\"https://github.com/mundanevision20\"\u003e\u003ccode\u003e@​mundanevision20\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix handling of \u003ccode\u003e:in-range\u003c/code\u003e and \u003ccode\u003e:out-of-range\u003c/code\u003e with end of year weeks (\u003ca href=\"https://github.com/mundanevision20\"\u003e\u003ccode\u003e@​mundanevision20\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix a potential infinite loop in the pretty printing debug function (\u003ca href=\"https://github.com/mundanevision20\"\u003e\u003ccode\u003e@​mundanevision20\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Changes in tests to accommodate latest Python HTML parser changes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Drop support for Python 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add support for Python 3.14.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Deploy with PyPI's \u0026quot;Trusted Publisher\u0026quot;.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.7\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add \u003ccode\u003e:open\u003c/code\u003e pseudo selector.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add \u003ccode\u003e:muted\u003c/code\u003e pseudo selector.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Recognize the following pseudo selectors: \u003ccode\u003e:autofill\u003c/code\u003e, \u003ccode\u003e:buffering\u003c/code\u003e, \u003ccode\u003e:fullscreen\u003c/code\u003e, \u003ccode\u003e:picture-in-picture\u003c/code\u003e,\n\u003ccode\u003e:popover-open\u003c/code\u003e, \u003ccode\u003e:seeking\u003c/code\u003e, \u003ccode\u003e:stalled\u003c/code\u003e, and \u003ccode\u003e:volume-locked\u003c/code\u003e. These selectors, while recognized, will not match any\nelement as they require a live environment to check element states and browser states. This just prevents Soup Sieve\nfrom failing when any of these selectors are specified.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: A number of existing pseudo-classes are no longer noted as experimental.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Typing fixes.\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/facelessuser/soupsieve/commit/09e106dc0fd6579c0327801fdcceb380ff60170e\"\u003e\u003ccode\u003e09e106d\u003c/code\u003e\u003c/a\u003e Fix grammar\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/09b27696ada6f07523a077950ce73da45579d524\"\u003e\u003ccode\u003e09b2769\u003c/code\u003e\u003c/a\u003e Update docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/c6e80fcab9ca4d3eaa61913778263e82bcecca1f\"\u003e\u003ccode\u003ec6e80fc\u003c/code\u003e\u003c/a\u003e Various fixes by \u003ca href=\"https://github.com/mundanevision20\"\u003e\u003ccode\u003e@​mundanevision20\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/288\"\u003e#288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/f89979745e12e83dbb31dde910a0ad08e9c5c717\"\u003e\u003ccode\u003ef899797\u003c/code\u003e\u003c/a\u003e Adjust changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/1b964a850bb482cc183f3f70811b25487ba200ee\"\u003e\u003ccode\u003e1b964a8\u003c/code\u003e\u003c/a\u003e Switch to using Zensical for documents (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/286\"\u003e#286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/046ce54956a0c30120038561e53b40994d29de2c\"\u003e\u003ccode\u003e046ce54\u003c/code\u003e\u003c/a\u003e Adjustments for changes in HTML parser (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/285\"\u003e#285\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/bf937788f0c3ff9bb2ffffacef7ad8832d8da16e\"\u003e\u003ccode\u003ebf93778\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop Python 3.8 (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/283\"\u003e#283\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/d82b33b72dd2e905dc441babdd68c98c846c1501\"\u003e\u003ccode\u003ed82b33b\u003c/code\u003e\u003c/a\u003e Spelling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/2fe1c55af2e2b1f033220a741113dba220bb84c9\"\u003e\u003ccode\u003e2fe1c55\u003c/code\u003e\u003c/a\u003e Use \u0026quot;Trusted Publisher\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/a616022df73ddc5ecb71092155be9baba876b52d\"\u003e\u003ccode\u003ea616022\u003c/code\u003e\u003c/a\u003e Link license in readme\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facelessuser/soupsieve/compare/2.6...2.8.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `itemadapter` from 0.12.2 to 0.13.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapy/itemadapter/blob/master/Changelog.md\"\u003eitemadapter's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e0.13.1 (2026-01-08)\u003c/h3\u003e\n\u003cp\u003eFixed \u003ccode\u003eget_json_schema()\u003c/code\u003e to properly format multiline field docstrings using\n\u003ccode\u003einspect.cleandoc()\u003c/code\u003e, ensuring consistent indentation and whitespace handling\n(\u003ca href=\"https://redirect.github.com/scrapy/itemadapter/pull/115\"\u003e#115\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003e0.13.0 (2025-12-15)\u003c/h3\u003e\n\u003cp\u003eAdded support for Python 3.14 and removed support for \u003ca href=\"https://pypy.org/\"\u003ePyPy\u003c/a\u003e\n3.10.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eget_json_schema()\u003c/code\u003e no longer reports all \u003ccode\u003escrapy.Item\u003c/code\u003e fields as required.\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/scrapy/itemadapter/commit/a358dfe694543d4227003d75221301a9b55732de\"\u003e\u003ccode\u003ea358dfe\u003c/code\u003e\u003c/a\u003e Bump version: 0.13.0 → 0.13.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/ac5d1023d3ae5fc239f64b78175a36d2f4761e25\"\u003e\u003ccode\u003eac5d102\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scrapy/itemadapter/issues/116\"\u003e#116\u003c/a\u003e from ErikFarellZyte/release-notes-0.13.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/48d04a904ca45d20bdc18bf935fbc0dda22b1254\"\u003e\u003ccode\u003e48d04a9\u003c/code\u003e\u003c/a\u003e Release notes for version 0.13.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/69437d9324bbe4ad7c1b12ebcd26b53c0f88e65b\"\u003e\u003ccode\u003e69437d9\u003c/code\u003e\u003c/a\u003e Use cleandoc() for field docstrings in JSON schema (\u003ca href=\"https://redirect.github.com/scrapy/itemadapter/issues/115\"\u003e#115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/47481554948a1af59b3676b7310b2a93e0b96212\"\u003e\u003ccode\u003e4748155\u003c/code\u003e\u003c/a\u003e Bump version: 0.12.2 → 0.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/bd8354658ce8bc974dfa83be7e4cf5f7e3313af4\"\u003e\u003ccode\u003ebd83546\u003c/code\u003e\u003c/a\u003e Release notes for 0.13.0 (\u003ca href=\"https://redirect.github.com/scrapy/itemadapter/issues/114\"\u003e#114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/640995a710369ecaec990b821867a106afc0a4ee\"\u003e\u003ccode\u003e640995a\u003c/code\u003e\u003c/a\u003e Make Scrapy fields always optional (\u003ca href=\"https://redirect.github.com/scrapy/itemadapter/issues/113\"\u003e#113\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/da9e9cc1f8d1638c33bee905f78bee18b9a157db\"\u003e\u003ccode\u003eda9e9cc\u003c/code\u003e\u003c/a\u003e Migrate tests to pytest asserts (\u003ca href=\"https://redirect.github.com/scrapy/itemadapter/issues/111\"\u003e#111\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/f3957f675cced9efa3ec6fefea374cc858b04f0c\"\u003e\u003ccode\u003ef3957f6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scrapy/itemadapter/issues/110\"\u003e#110\u003c/a\u003e from scrapy/py314\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/46902a4e91d8c2672c6443a5804e4f32e8c97008\"\u003e\u003ccode\u003e46902a4\u003c/code\u003e\u003c/a\u003e Drop some 3.13 CI jobs and PyPy 3.10.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scrapy/itemadapter/compare/v0.12.2...v0.13.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tldextract` from 5.3.0 to 5.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/john-kurkowski/tldextract/releases\"\u003etldextract's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.3.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBugfixes\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.9 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Python 3.14 + PyPy 3.11 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSpeed up IP address search space with \u003ccode\u003eisdecimal()\u003c/code\u003e instead of \u003ccode\u003eisdigit()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/352\"\u003e#352\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDocs\n\u003cul\u003e\n\u003cli\u003eReorganize, dedupe, and shorten README (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/349\"\u003e#349\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bmos\"\u003e\u003ccode\u003e@​bmos\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/pull/358\"\u003ejohn-kurkowski/tldextract#358\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elliotwutingfeng\"\u003e\u003ccode\u003e@​elliotwutingfeng\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/john-kurkowski/tldextract/compare/5.3.0...5.3.1\"\u003ehttps://github.com/john-kurkowski/tldextract/compare/5.3.0...5.3.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/john-kurkowski/tldextract/blob/master/CHANGELOG.md\"\u003etldextract's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.3.1 (2025-12-28)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBugfixes\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.9 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Python 3.14 + PyPy 3.11 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSpeed up IP address search space with \u003ccode\u003eisdecimal()\u003c/code\u003e instead of \u003ccode\u003eisdigit()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/352\"\u003e#352\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDocs\n\u003cul\u003e\n\u003cli\u003eReorganize, dedupe, and shorten README (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/349\"\u003e#349\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/john-kurkowski/tldextract/commit/361f12febf901ef48215d0380551d86c7f0608ac\"\u003e\u003ccode\u003e361f12f\u003c/code\u003e\u003c/a\u003e 5.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/34482ce70cb4ca7210d39fefb57b8b1ee34bc853\"\u003e\u003ccode\u003e34482ce\u003c/code\u003e\u003c/a\u003e Upgrade to newer setuptools-scm usage instructions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/b9a78148f1551c4f3c3d441c07cafd34207030cc\"\u003e\u003ccode\u003eb9a7814\u003c/code\u003e\u003c/a\u003e Fix license field deprecations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/e397b6cdff10e89cbf66e758c8fcfa31ede2dabd\"\u003e\u003ccode\u003ee397b6c\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.9 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/77b10ba7fca31a827fc678dbff34897663f2f611\"\u003e\u003ccode\u003e77b10ba\u003c/code\u003e\u003c/a\u003e Support Python 3.14 + PyPy 3.11 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/49c59d9f1ff9e25fce73ba8d9cde5274f7117c2b\"\u003e\u003ccode\u003e49c59d9\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Pin requests-file during typecheck\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/6e49ea583c85a80e82ae5554cd615e8ee305a026\"\u003e\u003ccode\u003e6e49ea5\u003c/code\u003e\u003c/a\u003e Reorganize, dedupe, and shorten README (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/349\"\u003e#349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/25643e4dcdc22deecc0b75966f5cd255ed3c6d49\"\u003e\u003ccode\u003e25643e4\u003c/code\u003e\u003c/a\u003e Pin requests-file during typecheck\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/b48507cbe1240878d7336fb3d72fc62b9421e684\"\u003e\u003ccode\u003eb48507c\u003c/code\u003e\u003c/a\u003e Use isdecimal() instead of isdigit() (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/352\"\u003e#352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/d89554d13ab323602d851ddadb8b02be369b37c6\"\u003e\u003ccode\u003ed89554d\u003c/code\u003e\u003c/a\u003e Restrict CI workflow access privileges to read-only (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/348\"\u003e#348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/john-kurkowski/tldextract/compare/5.3.0...5.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `selenium` from 4.29.0 to 4.40.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/SeleniumHQ/Selenium/releases\"\u003eselenium's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eSelenium 4.40.0\u003c/h2\u003e\n\u003ch2\u003eDetailed Changelogs by Component\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG\"\u003eJava\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES\"\u003ePython\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG\"\u003eDotNet\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES\"\u003eRuby\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md\"\u003eJavaScript\u003c/a\u003e\u003c/strong\u003e\n\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cul\u003e\n\u003cli\u003e[dotnet] Modernize \u003ccode\u003eEnvironmentManager\u003c/code\u003e, standardize assembly teardown by \u003ca href=\"https://github.com/RenderMichael\"\u003e\u003ccode\u003e@​RenderMichael\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/15551\"\u003eSeleniumHQ/selenium#15551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java] Refactor tests by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16684\"\u003eSeleniumHQ/selenium#16684\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ci]: bump cargo lockfile by \u003ca href=\"https://github.com/navin772\"\u003e\u003ccode\u003e@​navin772\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16698\"\u003eSeleniumHQ/selenium#16698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java][BiDi] change emulation commands return type to void by \u003ca href=\"https://github.com/Delta456\"\u003e\u003ccode\u003e@​Delta456\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16699\"\u003eSeleniumHQ/selenium#16699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java] simplify strings processing by \u003ca href=\"https://github.com/iampopovich\"\u003e\u003ccode\u003e@​iampopovich\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/15309\"\u003eSeleniumHQ/selenium#15309\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix few more flaky ruby tests by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16695\"\u003eSeleniumHQ/selenium#16695\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[bazel] Switch to custom \u003ccode\u003eclosure_js_deps\u003c/code\u003e rule by \u003ca href=\"https://github.com/shs96c\"\u003e\u003ccode\u003e@​shs96c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16571\"\u003eSeleniumHQ/selenium#16571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [bidi] Support SetScreenSettingsOverrideAsync method in Emulation module by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16704\"\u003eSeleniumHQ/selenium#16704\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] Modernize code patterns in test suites by \u003ca href=\"https://github.com/RenderMichael\"\u003e\u003ccode\u003e@​RenderMichael\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16701\"\u003eSeleniumHQ/selenium#16701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse proper AssertJ asserts that generate a useful error message by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16707\"\u003eSeleniumHQ/selenium#16707\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix Java language level in IDEA by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16708\"\u003eSeleniumHQ/selenium#16708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Properly verify Selenium Manager exists by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16711\"\u003eSeleniumHQ/selenium#16711\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix flaky Ruby test \u003ccode\u003eelement_spec.rb\u003c/code\u003e by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16709\"\u003eSeleniumHQ/selenium#16709\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java][BiDi] implement \u003ccode\u003eemulation.setScreenOrientationOverride\u003c/code\u003e by \u003ca href=\"https://github.com/Delta456\"\u003e\u003ccode\u003e@​Delta456\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16705\"\u003eSeleniumHQ/selenium#16705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[rb] add synchronization and error handling for socket interactions by \u003ca href=\"https://github.com/titusfortner\"\u003e\u003ccode\u003e@​titusfortner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16487\"\u003eSeleniumHQ/selenium#16487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[rb] mark low level bidi implementation as private api by \u003ca href=\"https://github.com/titusfortner\"\u003e\u003ccode\u003e@​titusfortner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16475\"\u003eSeleniumHQ/selenium#16475\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[rb] ensure driver process is always stopped by \u003ca href=\"https://github.com/titusfortner\"\u003e\u003ccode\u003e@​titusfortner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/15635\"\u003eSeleniumHQ/selenium#15635\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[rb] create user-friendly method for enabling bidi by \u003ca href=\"https://github.com/titusfortner\"\u003e\u003ccode\u003e@​titusfortner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/14284\"\u003eSeleniumHQ/selenium#14284\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [bidi] Added missing Script.RemoteReference LocaclValue type by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16717\"\u003eSeleniumHQ/selenium#16717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] Standardize \u003ccode\u003eIEquatable\u0026lt;T\u0026gt;\u003c/code\u003e implementations across types overriding Equals by \u003ca href=\"https://github.com/RenderMichael\"\u003e\u003ccode\u003e@​RenderMichael\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16665\"\u003eSeleniumHQ/selenium#16665\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] Fix nullability warnings in \u003ccode\u003eWebDriver\u003c/code\u003e by \u003ca href=\"https://github.com/RenderMichael\"\u003e\u003ccode\u003e@​RenderMichael\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16662\"\u003eSeleniumHQ/selenium#16662\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Don't compare object identity in conftest by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16723\"\u003eSeleniumHQ/selenium#16723\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16720\"\u003e#16720\u003c/a\u003e avoid failing because of temporary Chrome internal files by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16722\"\u003eSeleniumHQ/selenium#16722\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[rb] Add force encoding to remove warnings caused by json 3.0 by \u003ca href=\"https://github.com/aguspe\"\u003e\u003ccode\u003e@​aguspe\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16728\"\u003eSeleniumHQ/selenium#16728\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Remove deprecated FTP proxy support by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16721\"\u003eSeleniumHQ/selenium#16721\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Bump ruff and mypy versions by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16737\"\u003eSeleniumHQ/selenium#16737\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCreate target directories before copying file by \u003ca href=\"https://github.com/MohabMohie\"\u003e\u003ccode\u003e@​MohabMohie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16739\"\u003eSeleniumHQ/selenium#16739\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[bazel+closure]: Vendor the version of closure library we use by \u003ca href=\"https://github.com/shs96c\"\u003e\u003ccode\u003e@​shs96c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16742\"\u003eSeleniumHQ/selenium#16742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[closure] Fix failing \u003ccode\u003e//javascript/atoms:test-*\u003c/code\u003e targets by \u003ca href=\"https://github.com/shs96c\"\u003e\u003ccode\u003e@​shs96c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16749\"\u003eSeleniumHQ/selenium#16749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid sleep in tests by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16713\"\u003eSeleniumHQ/selenium#16713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[bazel] Bump \u003ccode\u003erules_closure\u003c/code\u003e and google closure libary to latest release by \u003ca href=\"https://github.com/shs96c\"\u003e\u003ccode\u003e@​shs96c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16755\"\u003eSeleniumHQ/selenium#16755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[refactor] call WebDriverException constructor instead of using reflection by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16763\"\u003eSeleniumHQ/selenium#16763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[build] Pin Browsers in Bazel by default by \u003ca href=\"https://github.com/titusfortner\"\u003e\u003ccode\u003e@​titusfortner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16743\"\u003eSeleniumHQ/selenium#16743\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[build] build selenium manager for tests by \u003ca href=\"https://github.com/titusfortner\"\u003e\u003ccode\u003e@​titusfortner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16736\"\u003eSeleniumHQ/selenium#16736\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[refactor] replace JUnit assertions by AssertJ by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16765\"\u003eSeleniumHQ/selenium#16765\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Add LocalWebDriver base class by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16730\"\u003eSeleniumHQ/selenium#16730\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix bug in FileHandler: it always failed on MacOS by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16771\"\u003eSeleniumHQ/selenium#16771\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/SeleniumHQ/selenium/commit/b3333f1c50b5ffa9c9cdaf325da79a84a4ec5ba1\"\u003e\u003ccode\u003eb3333f1\u003c/code\u003e\u003c/a\u003e [build] Prepare for release of Selenium 4.40 (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16931\"\u003e#16931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/1229133ce3f58d2e24a126168c75bb790bf836d7\"\u003e\u003ccode\u003e1229133\u003c/code\u003e\u003c/a\u003e [build] manual trigger job needs an approval step to limit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/1cc4bc7bfc96d7299558639de445ea577a749fb4\"\u003e\u003ccode\u003e1cc4bc7\u003c/code\u003e\u003c/a\u003e [build] remove ruby remote tests from CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/bcd0976dfd3350f2590673fa80804ca290b13233\"\u003e\u003ccode\u003ebcd0976\u003c/code\u003e\u003c/a\u003e [build] use rulesets to restrict and unrestrict trunk during release window (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/47dbd0d467006025d568914347a2adedad3590bb\"\u003e\u003ccode\u003e47dbd0d\u003c/code\u003e\u003c/a\u003e [dotnet] [bidi] Expose Input module in root BiDi class (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16940\"\u003e#16940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/1fefb89de6e5ae51b6bb55aceb6a3e8bc5cb1df9\"\u003e\u003ccode\u003e1fefb89\u003c/code\u003e\u003c/a\u003e [dotnet] [bidi] FileDialogOpened event in Input module (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16934\"\u003e#16934\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/691fb1cd6d87098ded9562b7ced9ea0d89ccf315\"\u003e\u003ccode\u003e691fb1c\u003c/code\u003e\u003c/a\u003e [grid] Improve race conditions in Grid session distribution (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16939\"\u003e#16939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/aaeb4a5285c607cd311ca7fd63c47de4816ca49d\"\u003e\u003ccode\u003eaaeb4a5\u003c/code\u003e\u003c/a\u003e [build] ensure compatible edge browser and driver when pinning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/492b6c4aa0dae0899e7c531befb691afc45e3fc6\"\u003e\u003ccode\u003e492b6c4\u003c/code\u003e\u003c/a\u003e [dotnet] fix syntax issue with bazel target preventing build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/631c5b011e6a299f3b65c0e06ddb2a97f2b0b7ac\"\u003e\u003ccode\u003e631c5b0\u003c/code\u003e\u003c/a\u003e [java] sanitize descriptions before using them in JavaDoc comments\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/SeleniumHQ/Selenium/compare/selenium-4.29.0...selenium-4.40.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 6.2.3 to 6.2.4\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\u003ev6.2.4 (2025-12-15)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix license information displayed on PyPI be using an updated\nversion of \u003ccode\u003etwine\u003c/code\u003e for uploading.\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/9983ef8bd76758707ab9d197d4bd9fa47b4fb8bd\"\u003e\u003ccode\u003e9983ef8\u003c/code\u003e\u003c/a\u003e Bump version for uploading with updated twine.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tkem/cachetools/compare/v6.2.3...v6.2.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.20.0 to 3.20.3\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.20.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix TOCTOU symlink vulnerability in SoftFileLock 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/465\"\u003etox-dev/filelock#465\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.20.2...3.20.3\"\u003ehttps://github.com/tox-dev/filelock/compare/3.20.2...3.20.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.20.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Unix systems without O_NOFOLLOW by \u003ca href=\"https://github.com/mwilliamson\"\u003e\u003ccode\u003e@​mwilliamson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/463\"\u003etox-dev/filelock#463\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/tox-dev/filelock/pull/464\"\u003etox-dev/filelock#464\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/mwilliamson\"\u003e\u003ccode\u003e@​mwilliamson\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/463\"\u003etox-dev/filelock#463\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.20.1...3.20.2\"\u003ehttps://github.com/tox-dev/filelock/compare/3.20.1...3.20.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.20.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2025-68146: Fix TOCTOU symlink vulnerability in lock file creation 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/461\"\u003etox-dev/filelock#461\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.20.0...3.20.1\"\u003ehttps://github.com/tox-dev/filelock/compare/3.20.0...3.20.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/tox-dev/filelock/commit/41b42dd2c72aecf7da83dbda5903b8087dddc4d5\"\u003e\u003ccode\u003e41b42dd\u003c/code\u003e\u003c/a\u003e Fix TOCTOU symlink vulnerability in SoftFileLock (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/465\"\u003e#465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f2e7d4046b6a2b375a573bcfbad21827b99f8939\"\u003e\u003ccode\u003ef2e7d40\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/464\"\u003e#464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/50888548eb2f008d372e71f2835a47851ab83836\"\u003e\u003ccode\u003e5088854\u003c/code\u003e\u003c/a\u003e Support Unix systems without O_NOFOLLOW (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/463\"\u003e#463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/377f62251d7cdf30768cc9ee1eb31cea1551c71b\"\u003e\u003ccode\u003e377f622\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/460\"\u003e#460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/4724d7f8c3393ec1f048c93933e6e3e6ec321f0e\"\u003e\u003ccode\u003e4724d7f\u003c/code\u003e\u003c/a\u003e Fix TOCTOU symlink vulnerability in lock file creation (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/461\"\u003e#461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/cb69414a2327cf0a9887e12054d1dc112ee700af\"\u003e\u003ccode\u003ecb69414\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/459\"\u003e#459\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/0769294f14a6c62eea64741722f7acef5386b4cd\"\u003e\u003ccode\u003e0769294\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/458\"\u003e#458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/414193a188892bd376eb5c56eb45a9cf8ecc9284\"\u003e\u003ccode\u003e414193a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/457\"\u003e#457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/1456797beb94ad59e5627462ad29f7ed3a966626\"\u003e\u003ccode\u003e1456797\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/456\"\u003e#456\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/8d6bf90af313ac7fd6e41ef2b715d91dd6858f5c\"\u003e\u003ccode\u003e8d6bf90\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/455\"\u003e#455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.20.0...3.20.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `typing-extensions` from 4.12.2 to 4.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/typing_extensions/releases\"\u003etyping-extensions's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cp\u003eNo user-facing changes since 4.15.0rc1.\u003c/p\u003e\n\u003cp\u003eNew features since 4.14.1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.15.0rc1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.1\u003c/h2\u003e\n\u003ch1\u003eRelease 4.14.1 (July 4, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix usage of \u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e nested inside other types\n(e.g., \u003ccode\u003etyping.Type[typing_extensions.TypedDict]\u003c/code\u003e). This is not allowed by the\ntype system but worked on older versions, so we maintain support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.0\u003c/h2\u003e\n\u003cp\u003eThis release adds several new features, including experimental support for inline typed dictionaries (\u003ca href=\"https://peps.python.org/pep-0764/\"\u003ePEP 764\u003c/a\u003e) and sentinels (\u003ca href=\"https://peps.python.org/pep-0661/\"\u003ePEP 661\u003c/a\u003e), and support for changes in Python 3.14. In addition, Python 3.8 is no longer supported.\u003c/p\u003e\n\u003cp\u003eChanges since 4.14.0rc1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003e__or__\u003c/code\u003e and \u003ccode\u003e__ror__\u003c/code\u003e methods from \u003ccode\u003etyping_extensions.Sentinel\u003c/code\u003e\non Python versions \u0026lt;3.10. PEP 604 was introduced in Python 3.10, and\n\u003ccode\u003etyping_extensions\u003c/code\u003e does not generally attempt to backport PEP-604 methods\nto prior versions.\u003c/li\u003e\n\u003cli\u003eFurther update \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e with changes in Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanges included in 4.14.0rc1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8 (including PyPy-3.8). Patch by \u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eDo not attempt to re-export names that have been removed from \u003ccode\u003etyping\u003c/code\u003e,\nanticipating the removal of \u003ccode\u003etyping.no_type_check_decorator\u003c/code\u003e in Python 3.15.\nPatch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003etyping_extensions.Format\u003c/code\u003e, \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e, and\n\u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e to align\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/python/typing_extensions/blob/main/CHANGELOG.md\"\u003etyping-extensions's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 4.15.0 (August 25, 2025)\u003c/h1\u003e\n\u003cp\u003eNo user-facing changes since 4.15.0rc1.\u003c/p\u003e\n\u003ch1\u003eRelease 4.15.0rc1 (August 18, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.14.1 (July 4, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix usage of \u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e nested inside other types\n(e.g., \u003ccode\u003etyping.Type[typing_extensions.TypedDict]\u003c/code\u003e). This is not allowed by the\ntype system but worked on older versions, so we maintain support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.14.0 (June 2, 2025)\u003c/h1\u003e\n\u003cp\u003eChanges since 4.14.0rc1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003e__or__\u003c/code\u003e and \u003ccode\u003e__ror__\u003c/code\u003e methods from \u003ccode\u003etyping_extensions.Sentinel\u003c/code\u003e\non Python versions \u0026lt;3.10. PEP 604 was introduced in Python 3.10, and\n\u003ccode\u003etyping_extensions\u003c/code\u003e does not generally attempt to backport PEP-604 methods\nto prior versions.\u003c/li\u003e\n\u003cli\u003eFurther update \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e with changes in Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.14.0rc1 (May 24, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8 (including PyPy-3.8). Patch by \u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eDo not attempt to re-export names that have been removed from \u003ccode\u003etyping\u003c/code\u003e,\nanticipating the removal of \u003ccode\u003etyping.no_type_check_decorator\u003c/code\u003e in Python 3.15.\nPatch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003etyping_extensions.Format\u003c/code\u003e, \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e, and\n\u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e to align\nwith changes in Python 3.14. Patches by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eFix tests for Python 3.14 and 3.15. Patches by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for inline typed dictionaries (\u003ca href=\"https://peps.python.org/pep-0764/\"\u003ePEP 764\u003c/a\u003e).\nPatch by \u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.Reader\u003c/code\u003e and \u003ccode\u003etyping_extensions.Writer\u003c/code\u003e. Patch by\nSebastian Rittau.\u003c/li\u003e\n\u003cli\u003eAdd support for sentinels (\u003ca href=\"https://peps.python.org/pep-0661/\"\u003ePEP 661\u003c/a\u003e). Patch by\n\u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\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/python/typing_extensions/commit/9d1637e264b5c1a6b7acee3e907015f89b20c2c9\"\u003e\u003ccode\u003e9d1637e\u003c/code\u003e\u003c/a\u003e Prepare release 4.15.0 (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/4bd67c5be5d9443c7d33c314d02a56ee125eb88d\"\u003e\u003ccode\u003e4bd67c5\u003c/code\u003e\u003c/a\u003e Coverage: exclude some noise (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/656\"\u003e#656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/e589a26da73b075c5276bae40b86db1af0144f84\"\u003e\u003ccode\u003ee589a26\u003c/code\u003e\u003c/a\u003e Coverage: add detailed report to job summary (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/655\"\u003e#655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/67d37fed1298e050f74d5acc95b2621bd37837ad\"\u003e\u003ccode\u003e67d37fe\u003c/code\u003e\u003c/a\u003e Coverage: Implement fail_under (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/654\"\u003e#654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/e9ae26f5286edee9262727755ecb9ad16e999192\"\u003e\u003ccode\u003ee9ae26f\u003c/code\u003e\u003c/a\u003e Don't delete previous coverage comment (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/ac80bb728a3006fc88ef7373b92f0c25cfcc7895\"\u003e\u003ccode\u003eac80bb7\u003c/code\u003e\u003c/a\u003e Add Coverage workflow (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/623\"\u003e#623\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/abaaafd98c1cc7e5baf098ec287a3d22cb339670\"\u003e\u003ccode\u003eabaaafd\u003c/code\u003e\u003c/a\u003e Prepare release 4.15.0rc1 (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/650\"\u003e#650\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/98104053ea8d49bcdd247804e5fa9f73136acbd4\"\u003e\u003ccode\u003e9810405\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003e@disjoint_base\u003c/code\u003e (PEP 800) (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/634\"\u003e#634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/7ee9e05fd484d06899ce56e80f5e1aa4c760fc03\"\u003e\u003ccode\u003e7ee9e05\u003c/code\u003e\u003c/a\u003e Backport type_params fix from CPython (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/646\"\u003e#646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/1e8eb9c06ef51b3a1e1f05303a16feca13f5ed98\"\u003e\u003ccode\u003e1e8eb9c\u003c/code\u003e\u003c/a\u003e Do not refer to PEP 705 as being experimental (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/648\"\u003e#648\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/typing_extensions/compare/4.12.2...4.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `attrs` from 25.3.0 to 25.4.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/hynek/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env from FIFOs (Unix) by \u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) by \u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini by \u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory 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/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml by \u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv work reliably on python 3.13 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/pull/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\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 in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/552\"\u003etheskumar/python-dotenv#552\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/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.1] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove more config to \u003ccode\u003epyproject.toml\u003c/code\u003e, removed \u003ccode\u003esetup.cfg\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for reading \u003ccode\u003e.env\u003c/code\u003e from FIFOs (Unix) by [\u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.0] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade build system to use PEP 517 \u0026amp; PEP 518 to use \u003ccode\u003ebuild\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e by [\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/583\"\u003e#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by [\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for disabling of \u003ccode\u003eload_dotenv()\u003c/code\u003e using \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e env var. by [\u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/569\"\u003e#569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.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.11\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.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.11 (2025-10-12)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14, lowest supported version is Python 3.8.\u003c/li\u003e\n\u003cli\u003eVarious updates to packaging, including PEP 740 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ad949ee3052c2265c66e3df2dd8871a5832ba327\"\u003e\u003ccode\u003ead949ee\u003c/code\u003e\u003c/a\u003e Release v3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cae4ba779e0a543823894bd4136651c187944da8\"\u003e\u003ccode\u003ecae4ba7\u003c/code\u003e\u003c/a\u003e Second release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8adb305165c77c4a45d1568a70ead75d2197692c\"\u003e\u003ccode\u003e8adb305\u003c/code\u003e\u003c/a\u003e Add space in RST link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/74cb2b652bb06133b0c4ab52cc98221be63162cf\"\u003e\u003ccode\u003e74cb2b6\u003c/code\u003e\u003c/a\u003e Release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05dab09fdde5bbf7d52f757c4dc62e0ba934cca8\"\u003e\u003ccode\u003e05dab09\u003c/code\u003e\u003c/a\u003e Format idna-data with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/90eac78b737d26613776b490432fc6d926b15c55\"\u003e\u003ccode\u003e90eac78\u003c/code\u003e\u003c/a\u003e Apply ruff formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a31ce7ecc0b767e40abb5ce28744ac567b73f366\"\u003e\u003ccode\u003ea31ce7e\u003c/code\u003e\u003c/a\u003e Remove errant test vectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/81f03334211c78c1832991ce70ebafb3cbfbb79c\"\u003e\u003ccode\u003e81f0333\u003c/code\u003e\u003c/a\u003e Omit vectors known to be broken in test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a0f32578c0cac28c7ffbb4c860c92eb2b9b579bd\"\u003e\u003ccode\u003ea0f3257\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into unicode-16-uts46-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/38d98860e6a1ab92fd35ab09ea4739feabf339a3\"\u003e\u003ccode\u003e38d9886\u003c/code\u003e\u003c/a\u003e Remove extra UTS46 test vector\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.10...v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `h11` from 0.14.0 to 0.16.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/1c5b07581f058886c8bdd87adababd7d959dc7ca\"\u003e\u003ccode\u003e1c5b075\u003c/code\u003e\u003c/a\u003e this time for surer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/d9c369935e853a7ee1aeb7e481f6dddf9b9c9b8a\"\u003e\u003ccode\u003ed9c3699\u003c/code\u003e\u003c/a\u003e this time for sure...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/d91b9dd2290a25c8c3f5ec15feb57de5873e6e39\"\u003e\u003ccode\u003ed91b9dd\u003c/code\u003e\u003c/a\u003e blacken\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/5a4683ca466b59bbab9b19cfea20ee157b31cee0\"\u003e\u003ccode\u003e5a4683c\u003c/code\u003e\u003c/a\u003e Soothe mypy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/9c9567f0a92d13a83a8d8ebdbc757c8c2d384536\"\u003e\u003ccode\u003e9c9567f\u003c/code\u003e\u003c/a\u003e Bump version to 0.16.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/114803a29ce50116dc47951c690ad4892b1a36ed\"\u003e\u003ccode\u003e114803a\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/9462006f6ce4941661888228cbd4ac1ea80689b0\"\u003e\u003ccode\u003e9462006\u003c/code\u003e\u003c/a\u003e Bump versio...\n\n_Description has been truncated_","html_url":"https://github.com/prototyp33/barcelona-housing-demographics-analyzer/pull/269","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/prototyp33%2Fbarcelona-housing-demographics-analyzer/issues/269","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/269/packages"},{"uuid":"3802922995","node_id":"PR_kwDOQh3VJ868oJAc","number":218,"state":"open","title":"chore(deps): bump the python-minor group with 21 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-12T06:17:55.000Z","updated_at":"2026-01-12T06:17:56.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor","update_count":21,"packages":[{"name":"fastapi","old_version":"0.104.1","new_version":"0.128.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.24.0","new_version":"0.40.0"},{"name":"pydantic","old_version":"2.5.0","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"python-dotenv","old_version":"1.0.0","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"httpx","old_version":"0.25.0","new_version":"0.28.1"},{"name":"trio","old_version":"0.22.2","new_version":"0.32.0","repository_url":"https://github.com/python-trio/trio"},{"name":"python-socks","old_version":"2.4.1","new_version":"2.8.0","repository_url":"https://github.com/romis2012/python-socks"},{"name":"python-jose","old_version":"3.3.0","new_version":"3.5.0"},{"name":"anthropic","old_version":"0.7.0","new_version":"0.75.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"torch","old_version":"2.2.0","new_version":"2.9.1","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.35.0","new_version":"4.57.3","repository_url":"https://github.com/huggingface/transformers"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"scikit-learn","old_version":"1.3.0","new_version":"1.7.2","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"shap","old_version":"0.44.1","new_version":"0.49.1","repository_url":"https://github.com/shap/shap"},{"name":"matplotlib","old_version":"3.7.3","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"sqlalchemy","old_version":"2.0.0","new_version":"2.0.45","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"alembic","old_version":"1.13.0","new_version":"1.18.0","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"requests","old_version":"2.31.0","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"beautifulsoup4","old_version":"4.12.0","new_version":"4.14.3"},{"name":"pyyaml","old_version":"6.0","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"streamlit","old_version":"1.28.0","new_version":"1.52.2","repository_url":"https://github.com/streamlit/streamlit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor group with 21 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.104.1` | `0.128.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.24.0` | `0.40.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.5.0` | `2.12.5` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.0` | `1.2.1` |\n| [httpx[socks]](https://github.com/encode/httpx) | `0.25.0` | `0.28.1` |\n| [trio](https://github.com/python-trio/trio) | `0.22.2` | `0.32.0` |\n| [python-socks](https://github.com/romis2012/python-socks) | `2.4.1` | `2.8.0` |\n| [python-jose[cryptography]](https://github.com/mpdavis/python-jose) | `3.3.0` | `3.5.0` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `0.7.0` | `0.75.0` |\n| [torch](https://github.com/pytorch/pytorch) | `2.2.0` | `2.9.1` |\n| [transformers](https://github.com/huggingface/transformers) | `4.35.0` | `4.57.3` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.3.0` | `1.7.2` |\n| [shap](https://github.com/shap/shap) | `0.44.1` | `0.49.1` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.7.3` | `3.10.8` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.0` | `2.0.45` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.13.0` | `1.18.0` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.32.5` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.12.0` | `4.14.3` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0` | `6.0.3` |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.28.0` | `1.52.2` |\n\nUpdates `fastapi` from 0.104.1 to 0.128.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.128.0\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for \u003ccode\u003epydantic.v1\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14609\"\u003e#14609\u003c/a\u003e by \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✅ Run performance tests only on Pydantic v2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14608\"\u003e#14608\u003c/a\u003e by \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.127.1\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔊 Add a custom \u003ccode\u003eFastAPIDeprecationWarning\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14605\"\u003e#14605\u003c/a\u003e by \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📝 Add documentary to website. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14600\"\u003e#14600\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14602\"\u003e#14602\u003c/a\u003e by \u003ca href=\"https://github.com/nilslindemann\"\u003e\u003ccode\u003e@​nilslindemann\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14581\"\u003e#14581\u003c/a\u003e by \u003ca href=\"https://github.com/nilslindemann\"\u003e\u003ccode\u003e@​nilslindemann\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🔧 Update pre-commit to use local Ruff instead of hook. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14604\"\u003e#14604\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 missing tests for code examples. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14569\"\u003e#14569\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 \u003ccode\u003elint\u003c/code\u003e job from \u003ccode\u003etest\u003c/code\u003e CI workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14593\"\u003e#14593\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Update secrets check. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14592\"\u003e#14592\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👷 Run CodSpeed tests in parallel to other tests to speed up CI. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14586\"\u003e#14586\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 scripts and pre-commit to autofix files. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14585\"\u003e#14585\u003c/a\u003e by \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.127.0\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔊 Add deprecation warnings when using \u003ccode\u003epydantic.v1\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14583\"\u003e#14583\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Add LLM prompt file for Korean, generated from the existing translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14546\"\u003e#14546\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 LLM prompt file for Japanese, generated from the existing translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14545\"\u003e#14545\u003c/a\u003e by \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 OpenAI model for translations to gpt-5.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14579\"\u003e#14579\u003c/a\u003e by \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.126.0\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Pydantic v1, keeping short temporary support for Pydantic v2's \u003ccode\u003epydantic.v1\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14575\"\u003e#14575\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8322a4445a3b25acd9b26b61192571b2d92f9bcd\"\u003e\u003ccode\u003e8322a44\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.128.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4b2cfcfd34d0b2e158a05b377426e0c8376b94de\"\u003e\u003ccode\u003e4b2cfcf\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e3006305518a56ea35f62a31748ad26fe4356fcc\"\u003e\u003ccode\u003ee300630\u003c/code\u003e\u003c/a\u003e ➖ Drop support for \u003ccode\u003epydantic.v1\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14609\"\u003e#14609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1b3bea8b6be2220cc1544653ea785d2134fcb35b\"\u003e\u003ccode\u003e1b3bea8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/34e884156f38dff4094a7764ff895c4d4b872060\"\u003e\u003ccode\u003e34e8841\u003c/code\u003e\u003c/a\u003e ✅ Run performance tests only on Pydantic v2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14608\"\u003e#14608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cd90c78391f86f3fd06d5b327bffad9666b05b44\"\u003e\u003ccode\u003ecd90c78\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.127.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/93f4dfd88b7d62bda89eb521ebd9322e357e6fff\"\u003e\u003ccode\u003e93f4dfd\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/535b5daa317a9d1d1f9a1058e57650a7beefa861\"\u003e\u003ccode\u003e535b5da\u003c/code\u003e\u003c/a\u003e 🔊 Add a custom \u003ccode\u003eFastAPIDeprecationWarning\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14605\"\u003e#14605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6b53786f626db95a42fd0f66afd360bab161f4b1\"\u003e\u003ccode\u003e6b53786\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d98f4eb56eae3155034fe631d9639d95171fb9ab\"\u003e\u003ccode\u003ed98f4eb\u003c/code\u003e\u003c/a\u003e 🔧 Update pre-commit to use local Ruff instead of hook (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14604\"\u003e#14604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.104.1...0.128.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn[standard]` from 0.24.0 to 0.40.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn[standard]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.40.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 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/2772\"\u003eKludex/uvicorn#2772\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.39.0...0.40.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.39.0...0.40.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.39.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eexplicitly start ASGI run with empty context by \u003ca href=\"https://github.com/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2742\"\u003eKludex/uvicorn#2742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(websockets): Send close frame on ASGI return by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2769\"\u003eKludex/uvicorn#2769\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2742\"\u003eKludex/uvicorn#2742\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.38.0...0.39.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.38.0...0.39.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.38.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14 by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2723\"\u003eKludex/uvicorn#2723\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NGANAMODEIJunior\"\u003e\u003ccode\u003e@​NGANAMODEIJunior\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2713\"\u003eKludex/uvicorn#2713\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.37.0...0.38.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.37.0...0.38.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.37.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--timeout-worker-healthcheck\u003c/code\u003e setting by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2711\"\u003eKludex/uvicorn#2711\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eos.PathLike[str]\u003c/code\u003e type to \u003ccode\u003essl_ca_certs\u003c/code\u003e by \u003ca href=\"https://github.com/rnv812\"\u003e\u003ccode\u003e@​rnv812\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2676\"\u003eKludex/uvicorn#2676\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LincolnPuzey\"\u003e\u003ccode\u003e@​LincolnPuzey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2669\"\u003eKludex/uvicorn#2669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rnv812\"\u003e\u003ccode\u003e@​rnv812\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2676\"\u003eKludex/uvicorn#2676\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.36.1...0.37.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.36.1...0.37.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.36.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRaise an exception when calling removed \u003ccode\u003eConfig.setup_event_loop()\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2709\"\u003eKludex/uvicorn#2709\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.36.0...0.36.1\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.36.0...0.36.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.36.0\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport custom IOLOOPs by \u003ca href=\"https://github.com/gnir-work\"\u003e\u003ccode\u003e@​gnir-work\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2435\"\u003eKludex/uvicorn#2435\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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[standard]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.40.0 (December 21, 2025)\u003c/h2\u003e\n\u003ch3\u003eRemove\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2772\"\u003e#2772\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.39.0 (December 21, 2025)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSend close frame on ASGI return for WebSockets (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2769\"\u003e#2769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExplicitly start ASGI run with empty context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2742\"\u003e#2742\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.38.0 (October 18, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2723\"\u003e#2723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.37.0 (September 23, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--timeout-worker-healthcheck\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2711\"\u003e#2711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eos.PathLike[str]\u003c/code\u003e type to \u003ccode\u003essl_ca_certs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2676\"\u003e#2676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.36.1 (September 23, 2025)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaise an exception when calling removed \u003ccode\u003eConfig.setup_event_loop()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2709\"\u003e#2709\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.36.0 (September 20, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport custom IOLOOPs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2435\"\u003e#2435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow to provide importable string in \u003ccode\u003e--http\u003c/code\u003e, \u003ccode\u003e--ws\u003c/code\u003e and \u003ccode\u003e--loop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2658\"\u003e#2658\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.35.0 (June 28, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eWebSocketsSansIOProtocol\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2540\"\u003e#2540\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefine help message for option \u003ccode\u003e--proxy-headers\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2653\"\u003e#2653\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.34.3 (June 1, 2025)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/9ff60042a53cd1bbfd5580ab0a91ea2d1d8f2f8c\"\u003e\u003ccode\u003e9ff6004\u003c/code\u003e\u003c/a\u003e Version 0.40.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2773\"\u003e#2773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/19df042c54c1562f058daf021d6f7bd1d5ed621c\"\u003e\u003ccode\u003e19df042\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2772\"\u003e#2772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/865ce7c0b4329a384273a6628eceb8d597989521\"\u003e\u003ccode\u003e865ce7c\u003c/code\u003e\u003c/a\u003e Run strict mypy on test suite (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2771\"\u003e#2771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4f40b8495772eb3a1ab3613ffd7be5156f8e1389\"\u003e\u003ccode\u003e4f40b84\u003c/code\u003e\u003c/a\u003e Version 0.39.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2770\"\u003e#2770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5692dfc416f9e65aee5028e55d119313d8d3ab0f\"\u003e\u003ccode\u003e5692dfc\u003c/code\u003e\u003c/a\u003e fix(websockets): Send close frame on ASGI return (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2769\"\u003e#2769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4194764a26824e5d8ddd1fa673df78dff82966e0\"\u003e\u003ccode\u003e4194764\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2763\"\u003e#2763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/d94bf28743de545d2d4b150f022203a5178cb705\"\u003e\u003ccode\u003ed94bf28\u003c/code\u003e\u003c/a\u003e explicitly start ASGI run with empty context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2742\"\u003e#2742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/8ae0bcbecb0a655789abf0c2dd4200848fc68a30\"\u003e\u003ccode\u003e8ae0bcb\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2748\"\u003e#2748\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4744ff9a1a4888c76ea160328cc9dcc2680c2c71\"\u003e\u003ccode\u003e4744ff9\u003c/code\u003e\u003c/a\u003e Add groups configuration for GitHub Actions (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2747\"\u003e#2747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/0391372376c264604a0475b0864bcbf3a8705352\"\u003e\u003ccode\u003e0391372\u003c/code\u003e\u003c/a\u003e chore(deps): bump astral-sh/setup-uv from 6.8.0 to 7.1.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2746\"\u003e#2746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.24.0...0.40.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.5.0 to 2.12.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.12.5 2025-11-26\u003c/h2\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.4 2025-11-05\u003c/h2\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required 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/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method of the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\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.12.3...v2.12.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.3 2025-10-17\u003c/h2\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the third 2.13 patch release, fixing issues related to the \u003ccode\u003eFieldInfo\u003c/code\u003e class, and reverting a change to the supported \u003ca href=\"https://docs.pydantic.dev/latest/concepts/validators/#model-validators\"\u003e\u003cem\u003eafter\u003c/em\u003e model validator\u003c/a\u003e function signatures.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required 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/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in\n\u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/bd2d0dd0137dfa1a8fdff2529b9dfb1547980150\"\u003e\u003ccode\u003ebd2d0dd\u003c/code\u003e\u003c/a\u003e Prepare release v2.12.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7d0302ec7ec2cf115de3450a615522875bdd8b56\"\u003e\u003ccode\u003e7d0302e\u003c/code\u003e\u003c/a\u003e Document security implications when using \u003ccode\u003ecreate_model()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e9ef980def726b6f59b6c495ddc9dc259a0228db\"\u003e\u003ccode\u003ee9ef980\u003c/code\u003e\u003c/a\u003e Fix typo in Standard Library Types documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f2c20c00c265a31a13c48f9bae923a87c829952e\"\u003e\u003ccode\u003ef2c20c0\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003epydantic-docs\u003c/code\u003e dev dependency, make use of versioning blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a76c1aa26f2d64a3fd080ac515d80832689197e8\"\u003e\u003ccode\u003ea76c1aa\u003c/code\u003e\u003c/a\u003e Update documentation about JSON Schema\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8cbc72ca489891e574fba45238ee8bd4f8e719a2\"\u003e\u003ccode\u003e8cbc72c\u003c/code\u003e\u003c/a\u003e Add documentation about custom \u003ccode\u003e__init__()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/99eba599069da137b3f708ffa74627f2b456ba73\"\u003e\u003ccode\u003e99eba59\u003c/code\u003e\u003c/a\u003e Add additional test for \u003ccode\u003eFieldInfo.get_default()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c71076988e507ea93844c77c3bf0bbb85a5716af\"\u003e\u003ccode\u003ec710769\u003c/code\u003e\u003c/a\u003e Special case \u003ccode\u003eMISSING\u003c/code\u003e sentinel in \u003ccode\u003esmart_deepcopy()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/20a9d771c210fd77d52366ac923258c4c199727f\"\u003e\u003ccode\u003e20a9d77\u003c/code\u003e\u003c/a\u003e Do not delete mock validator/serializer in \u003ccode\u003erebuild_dataclass()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c86515a3a8f2120148fab2eaedd3bc45925779d0\"\u003e\u003ccode\u003ec86515a\u003c/code\u003e\u003c/a\u003e Update parts of the model and \u003ccode\u003erevalidate_instances\u003c/code\u003e documentation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.5.0...v2.12.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.0.0 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env from FIFOs (Unix) by \u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) by \u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini by \u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory 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/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml by \u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv work reliably on python 3.13 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/pull/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\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 in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/552\"\u003etheskumar/python-dotenv#552\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/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.1] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove more config to \u003ccode\u003epyproject.toml\u003c/code\u003e, removed \u003ccode\u003esetup.cfg\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for reading \u003ccode\u003e.env\u003c/code\u003e from FIFOs (Unix) by [\u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.0] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade build system to use PEP 517 \u0026amp; PEP 518 to use \u003ccode\u003ebuild\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e by [\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/583\"\u003e#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by [\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for disabling of \u003ccode\u003eload_dotenv()\u003c/code\u003e using \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e env var. by [\u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/569\"\u003e#569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.0.1] - 2024-01-23\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGracefully handle code which has been imported from a zipfile (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/456\"\u003e#456\u003c/a\u003e by [\u003ca href=\"https://github.com/samwyma\"\u003e\u003ccode\u003e@​samwyma\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eAllow modules using \u003ccode\u003eload_dotenv\u003c/code\u003e to be reloaded when launched in a separate thread (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/497\"\u003e#497\u003c/a\u003e by [\u003ca href=\"https://github.com/freddyaboulton\"\u003e\u003ccode\u003e@​freddyaboulton\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eFix file not closed after deletion, handle error in the rewrite function (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/469\"\u003e#469\u003c/a\u003e by [\u003ca href=\"https://github.com/Qwerty-133\"\u003e\u003ccode\u003e@​Qwerty-133\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse pathlib.Path in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/466\"\u003e#466\u003c/a\u003e by [\u003ca href=\"https://github.com/eumiro\"\u003e\u003ccode\u003e@​eumiro\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eFix year in release date in changelog.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/454\"\u003e#454\u003c/a\u003e by [\u003ca href=\"https://github.com/jankislinger\"\u003e\u003ccode\u003e@​jankislinger\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eUse https in README links (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/474\"\u003e#474\u003c/a\u003e by [\u003ca href=\"https://github.com/Nicals\"\u003e\u003ccode\u003e@​Nicals\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/theskumar/python-dotenv/commit/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.0...v1.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httpx[socks]` from 0.25.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[socks]'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[socks]'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.25.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 `trio` from 0.22.2 to 0.32.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow \u003ccode\u003etrio.CapacityLimiter\u003c/code\u003e to have zero total_tokens. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3321\"\u003epython-trio/trio#3321\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where iterating over an \u003ccode\u003e@as_safe_channel\u003c/code\u003e-derived \u003ccode\u003eReceiveChannel\u003c/code\u003e would raise \u003ccode\u003etrio.BrokenResourceError\u003c/code\u003e if the channel was closed by another task. It now shuts down cleanly. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3331\"\u003epython-trio/trio#3331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etrio.lowlevel.Task.iter_await_frames\u003c/code\u003e now works on completed tasks, by returning an empty list of frames if the underlying coroutine has been closed. Previously, it raised an internal error. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3337\"\u003epython-trio/trio#3337\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals without deprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003epython-trio/trio#3345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDecrease indentation for exception groups raised in \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3332\"\u003epython-trio/trio#3332\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations and removals\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c0b394a55594dc39f353bae87e745083acff172e\"\u003e\u003ccode\u003ec0b394a\u003c/code\u003e\u003c/a\u003e Bump version to 0.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/95681199abcefe8ca1325e7e122f1005a56def7f\"\u003e\u003ccode\u003e9568119\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3348\"\u003e#3348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/f05398f17521e246dff608c6843f6970bcabc220\"\u003e\u003ccode\u003ef05398f\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/19196a83424dcce23f85bb7fc5dad73a4d943002\"\u003e\u003ccode\u003e19196a8\u003c/code\u003e\u003c/a\u003e Drop 3.9 support (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003e#3345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/bd3787fc766babe9a49ff2ca19c4627a642aee12\"\u003e\u003ccode\u003ebd3787f\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3347\"\u003e#3347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/43261ce646e3efda0620fc6cc0a38c850aeaf267\"\u003e\u003ccode\u003e43261ce\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3346\"\u003e#3346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/1425e7e5ea65e200a2bfe76756a38388a1981b83\"\u003e\u003ccode\u003e1425e7e\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3344\"\u003e#3344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/06e6f089225b2a34af9a03d3034a63f29416a9f4\"\u003e\u003ccode\u003e06e6f08\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/236a2094f239d42cb45db9975469e9eb9a5a77c7\"\u003e\u003ccode\u003e236a209\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/3ee08fe46826296e660722a8c57afa56eb242b11\"\u003e\u003ccode\u003e3ee08fe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/compare/v0.22.2...v0.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-socks` from 2.4.1 to 2.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/romis2012/python-socks/releases\"\u003epython-socks's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.8.0\u003c/h2\u003e\n\u003cp\u003eAdd \u003ccode\u003eProxyException\u003c/code\u003e base class\u003c/p\u003e\n\u003ch2\u003ev2.7.3\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.7.2\u003c/h2\u003e\n\u003cp\u003eAvoid leaking an open socket (trio) by \u003ca href=\"https://github.com/aaugustin\"\u003e\u003ccode\u003e@​aaugustin\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/romis2012/python-socks/issues/44\"\u003e#44\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003ev2.7.1\u003c/h2\u003e\n\u003cp\u003eClose socket on loop.sock_connect(...) error by \u003ca href=\"https://github.com/aaugustin\"\u003e\u003ccode\u003e@​aaugustin\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/romis2012/python-socks/issues/40\"\u003e#40\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003ev2.7.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.6.1\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.6.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.5.3\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.5.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.5.1\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.5.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.4.4\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.4.3\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.4.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\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/romis2012/python-socks/commit/50a3024a8ac10888085f963e44ab3a79d6574703\"\u003e\u003ccode\u003e50a3024\u003c/code\u003e\u003c/a\u003e Introduce ProxyException base class\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/0f573c4b35ef65c38e6ead5514e716e24820511c\"\u003e\u003ccode\u003e0f573c4\u003c/code\u003e\u003c/a\u003e Bump version, update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/053c2710c592a8580e8ef83cb920920cc7411f43\"\u003e\u003ccode\u003e053c271\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to test matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/b4e68da3204aa94559e5b3daafaabd131958283a\"\u003e\u003ccode\u003eb4e68da\u003c/code\u003e\u003c/a\u003e Update some dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/e769dba047ba30e4b323206da370119ab196e4a8\"\u003e\u003ccode\u003ee769dba\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/4555b273362327d3d150996aee849609706dd6aa\"\u003e\u003ccode\u003e4555b27\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/romis2012/python-socks/issues/44\"\u003e#44\u003c/a\u003e from aaugustin/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/5facc0e4f38e8f1e0bd9b8931e985a64a7e47dd6\"\u003e\u003ccode\u003e5facc0e\u003c/code\u003e\u003c/a\u003e Avoid leaking an open socket\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/8eb860cbb89c15d16cf94b99c842752ee90f3e0f\"\u003e\u003ccode\u003e8eb860c\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/2e4f5ca9fcb9e857c30ca8baa32f2190760e3490\"\u003e\u003ccode\u003e2e4f5ca\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/romis2012/python-socks/issues/40\"\u003e#40\u003c/a\u003e from aaugustin/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/f9454a5b36be776c8ce573d225ac519567e19152\"\u003e\u003ccode\u003ef9454a5\u003c/code\u003e\u003c/a\u003e Be more specific in exception catching\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/romis2012/python-socks/compare/v2.4.1...v2.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-jose[cryptography]` from 3.3.0 to 3.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mpdavis/python-jose/releases\"\u003epython-jose[cryptography]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.5.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.12 \u0026amp; 3.13\u003c/li\u003e\n\u003cli\u003eUpgrade to pyasn1 0.5.1+\u003c/li\u003e\n\u003cli\u003eUpgrade to pytest and other dependencies\u003c/li\u003e\n\u003cli\u003eAdd RTD config file to silence emailed deprecation warnings\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove get_random_bytes from cryptography backend\u003c/li\u003e\n\u003cli\u003eDo not use \u003ccode\u003eutc_now\u003c/code\u003e on module level\u003c/li\u003e\n\u003cli\u003eRemove key data (sensitive information) from JWKError exceptions\u003c/li\u003e\n\u003cli\u003eAdded possibility to call jwk.construct() with a private RSA key\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://pypi.org/project/python-jose/3.5.0/\"\u003ehttps://pypi.org/project/python-jose/3.5.0/\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.4.0\u003c/h2\u003e\n\u003ch3\u003eNews\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.6 and 3.7\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.10 and 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdating \u003ccode\u003eCryptographyAESKey::encrypt\u003c/code\u003e to generate 96 bit IVs for GCM block\ncipher mode\u003c/li\u003e\n\u003cli\u003eFix for PEM key comparisons caused by line lengths and new lines\u003c/li\u003e\n\u003cli\u003eFix for CVE-2024-33664 - JWE limited to 250KiB\u003c/li\u003e\n\u003cli\u003eFix for CVE-2024-33663 - signing JWT with public key is now forbidden\u003c/li\u003e\n\u003cli\u003eReplace usage of deprecated datetime.utcnow() with datetime.now(UTC)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHousekeeping\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Github Actions Workflows\u003c/li\u003e\n\u003cli\u003eUpdated to use tox 4.x\u003c/li\u003e\n\u003cli\u003eRevise codecov integration\u003c/li\u003e\n\u003cli\u003eFixed DeprecationWarnings\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/mpdavis/python-jose/blob/master/CHANGELOG.md\"\u003epython-jose[cryptography]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.5.0 -- 2025-05-28\u003c/h2\u003e\n\u003ch3\u003eNews\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.12 \u0026amp; 3.13\u003c/li\u003e\n\u003cli\u003eUpgrade to pyasn1 0.5.1+\u003c/li\u003e\n\u003cli\u003eUpgrade to pytest and other dependencies\u003c/li\u003e\n\u003cli\u003eAdd RTD config file to silence emailed deprecation warnings\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove get_random_bytes from cryptography backend\u003c/li\u003e\n\u003cli\u003eDo not use \u003ccode\u003eutc_now\u003c/code\u003e on module level\u003c/li\u003e\n\u003cli\u003eRemove key data (sensitive information) from JWKError exceptions\u003c/li\u003e\n\u003cli\u003eAdded possibility to call jwk.construct() with a private RSA key\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.4.0 -- 2025-02-14\u003c/h2\u003e\n\u003ch3\u003eNews\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.6 and 3.7\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.10 and 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdating \u003ccode\u003eCryptographyAESKey::encrypt\u003c/code\u003e to generate 96 bit IVs for GCM block\ncipher mode\u003c/li\u003e\n\u003cli\u003eFix for PEM key comparisons caused by line lengths and new lines\u003c/li\u003e\n\u003cli\u003eFix for CVE-2024-33664 - JWE limited to 250KiB\u003c/li\u003e\n\u003cli\u003eFix for CVE-2024-33663 - signing JWT with public key is now forbidden\u003c/li\u003e\n\u003cli\u003eReplace usage of deprecated datetime.utcnow() with datetime.now(UTC)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHousekeeping\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Github Actions Workflows\u003c/li\u003e\n\u003cli\u003eUpdated to use tox 4.x\u003c/li\u003e\n\u003cli\u003eRevise codecov integration\u003c/li\u003e\n\u003cli\u003eFixed DeprecationWarnings\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/mpdavis/python-jose/commit/018b310ddb8b50dcfd09a0c152117835a21dd656\"\u003e\u003ccode\u003e018b310\u003c/code\u003e\u003c/a\u003e Prepare release 3.5.0 (\u003ca href=\"https://redirect.github.com/mpdavis/python-jose/issues/388\"\u003e#388\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mpdavis/python-jose/commit/393c37476c728782dacc41cd79472627a5b198f3\"\u003e\u003ccode\u003e393c374\u003c/code\u003e\u003c/a\u003e Improve jwt.decode key doc (\u003ca href=\"https://redirect.github.com/mpdavis/python-jose/issues/198\"\u003e#198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mpdavis/python-jose/commit/50d43908ff5d3c6b48017c5d07b3b95c71ed89d9\"\u003e\u003ccode\u003e50d4390\u003c/code\u003e\u003c/a\u003e utils.py: fix types in docstrings for base64url_encode/decode (\u003ca href=\"https://redirect.github.com/mpdavis/python-jose/issues/269\"\u003e#269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mpdavis/python-jose/commit/8fd0b6318643edf9a7eee718d7f978fd04345e06\"\u003e\u003ccode\u003e8fd0b63\u003c/code\u003e\u003c/a\u003e Add RTD config file to silence emailed deprecation warnings (\u003ca href=\"https://redirect.github.com/mpdavis/python-jose/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://git...\n\n_Description has been truncated_","html_url":"https://github.com/JesseBrown1980/AI-healthCare-project/pull/218","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/JesseBrown1980%2FAI-healthCare-project/issues/218","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/218/packages"},{"uuid":"3791355311","node_id":"PR_kwDOQh3VJ868CsKW","number":200,"state":"closed","title":"chore(deps): Bump the python-minor group with 21 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-01-11T00:07:47.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-08T05:42:43.000Z","updated_at":"2026-01-11T00:07:55.000Z","time_to_close":239104,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"python-minor","update_count":21,"packages":[{"name":"fastapi","old_version":"0.104.1","new_version":"0.128.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.24.0","new_version":"0.40.0"},{"name":"pydantic","old_version":"2.5.0","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"python-dotenv","old_version":"1.0.0","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"httpx","old_version":"0.25.0","new_version":"0.28.1"},{"name":"trio","old_version":"0.22.2","new_version":"0.32.0","repository_url":"https://github.com/python-trio/trio"},{"name":"python-socks","old_version":"2.4.1","new_version":"2.8.0","repository_url":"https://github.com/romis2012/python-socks"},{"name":"python-jose","old_version":"3.3.0","new_version":"3.5.0"},{"name":"anthropic","old_version":"0.7.0","new_version":"0.75.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"torch","old_version":"2.2.0","new_version":"2.9.1","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.35.0","new_version":"4.57.3","repository_url":"https://github.com/huggingface/transformers"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"scikit-learn","old_version":"1.3.0","new_version":"1.7.2","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"shap","old_version":"0.44.1","new_version":"0.49.1","repository_url":"https://github.com/shap/shap"},{"name":"matplotlib","old_version":"3.7.3","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"sqlalchemy","old_version":"2.0.0","new_version":"2.0.45","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"alembic","old_version":"1.13.0","new_version":"1.17.2","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"requests","old_version":"2.31.0","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"beautifulsoup4","old_version":"4.12.0","new_version":"4.14.3"},{"name":"pyyaml","old_version":"6.0","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"streamlit","old_version":"1.28.0","new_version":"1.52.2","repository_url":"https://github.com/streamlit/streamlit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor group with 21 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.104.1` | `0.128.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.24.0` | `0.40.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.5.0` | `2.12.5` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.0` | `1.2.1` |\n| [httpx[socks]](https://github.com/encode/httpx) | `0.25.0` | `0.28.1` |\n| [trio](https://github.com/python-trio/trio) | `0.22.2` | `0.32.0` |\n| [python-socks](https://github.com/romis2012/python-socks) | `2.4.1` | `2.8.0` |\n| [python-jose[cryptography]](https://github.com/mpdavis/python-jose) | `3.3.0` | `3.5.0` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `0.7.0` | `0.75.0` |\n| [torch](https://github.com/pytorch/pytorch) | `2.2.0` | `2.9.1` |\n| [transformers](https://github.com/huggingface/transformers) | `4.35.0` | `4.57.3` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.3.0` | `1.7.2` |\n| [shap](https://github.com/shap/shap) | `0.44.1` | `0.49.1` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.7.3` | `3.10.8` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.0` | `2.0.45` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.13.0` | `1.17.2` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.32.5` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.12.0` | `4.14.3` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0` | `6.0.3` |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.28.0` | `1.52.2` |\n\nUpdates `fastapi` from 0.104.1 to 0.128.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.128.0\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for \u003ccode\u003epydantic.v1\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14609\"\u003e#14609\u003c/a\u003e by \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✅ Run performance tests only on Pydantic v2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14608\"\u003e#14608\u003c/a\u003e by \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.127.1\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔊 Add a custom \u003ccode\u003eFastAPIDeprecationWarning\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14605\"\u003e#14605\u003c/a\u003e by \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📝 Add documentary to website. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14600\"\u003e#14600\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14602\"\u003e#14602\u003c/a\u003e by \u003ca href=\"https://github.com/nilslindemann\"\u003e\u003ccode\u003e@​nilslindemann\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14581\"\u003e#14581\u003c/a\u003e by \u003ca href=\"https://github.com/nilslindemann\"\u003e\u003ccode\u003e@​nilslindemann\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🔧 Update pre-commit to use local Ruff instead of hook. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14604\"\u003e#14604\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 missing tests for code examples. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14569\"\u003e#14569\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 \u003ccode\u003elint\u003c/code\u003e job from \u003ccode\u003etest\u003c/code\u003e CI workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14593\"\u003e#14593\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Update secrets check. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14592\"\u003e#14592\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👷 Run CodSpeed tests in parallel to other tests to speed up CI. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14586\"\u003e#14586\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 scripts and pre-commit to autofix files. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14585\"\u003e#14585\u003c/a\u003e by \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.127.0\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔊 Add deprecation warnings when using \u003ccode\u003epydantic.v1\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14583\"\u003e#14583\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Add LLM prompt file for Korean, generated from the existing translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14546\"\u003e#14546\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 LLM prompt file for Japanese, generated from the existing translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14545\"\u003e#14545\u003c/a\u003e by \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 OpenAI model for translations to gpt-5.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14579\"\u003e#14579\u003c/a\u003e by \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.126.0\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Pydantic v1, keeping short temporary support for Pydantic v2's \u003ccode\u003epydantic.v1\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14575\"\u003e#14575\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8322a4445a3b25acd9b26b61192571b2d92f9bcd\"\u003e\u003ccode\u003e8322a44\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.128.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4b2cfcfd34d0b2e158a05b377426e0c8376b94de\"\u003e\u003ccode\u003e4b2cfcf\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e3006305518a56ea35f62a31748ad26fe4356fcc\"\u003e\u003ccode\u003ee300630\u003c/code\u003e\u003c/a\u003e ➖ Drop support for \u003ccode\u003epydantic.v1\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14609\"\u003e#14609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1b3bea8b6be2220cc1544653ea785d2134fcb35b\"\u003e\u003ccode\u003e1b3bea8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/34e884156f38dff4094a7764ff895c4d4b872060\"\u003e\u003ccode\u003e34e8841\u003c/code\u003e\u003c/a\u003e ✅ Run performance tests only on Pydantic v2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14608\"\u003e#14608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cd90c78391f86f3fd06d5b327bffad9666b05b44\"\u003e\u003ccode\u003ecd90c78\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.127.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/93f4dfd88b7d62bda89eb521ebd9322e357e6fff\"\u003e\u003ccode\u003e93f4dfd\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/535b5daa317a9d1d1f9a1058e57650a7beefa861\"\u003e\u003ccode\u003e535b5da\u003c/code\u003e\u003c/a\u003e 🔊 Add a custom \u003ccode\u003eFastAPIDeprecationWarning\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14605\"\u003e#14605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6b53786f626db95a42fd0f66afd360bab161f4b1\"\u003e\u003ccode\u003e6b53786\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d98f4eb56eae3155034fe631d9639d95171fb9ab\"\u003e\u003ccode\u003ed98f4eb\u003c/code\u003e\u003c/a\u003e 🔧 Update pre-commit to use local Ruff instead of hook (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14604\"\u003e#14604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.104.1...0.128.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn[standard]` from 0.24.0 to 0.40.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn[standard]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.40.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 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/2772\"\u003eKludex/uvicorn#2772\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.39.0...0.40.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.39.0...0.40.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.39.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eexplicitly start ASGI run with empty context by \u003ca href=\"https://github.com/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2742\"\u003eKludex/uvicorn#2742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(websockets): Send close frame on ASGI return by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2769\"\u003eKludex/uvicorn#2769\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2742\"\u003eKludex/uvicorn#2742\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.38.0...0.39.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.38.0...0.39.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.38.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14 by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2723\"\u003eKludex/uvicorn#2723\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NGANAMODEIJunior\"\u003e\u003ccode\u003e@​NGANAMODEIJunior\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2713\"\u003eKludex/uvicorn#2713\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.37.0...0.38.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.37.0...0.38.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.37.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--timeout-worker-healthcheck\u003c/code\u003e setting by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2711\"\u003eKludex/uvicorn#2711\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eos.PathLike[str]\u003c/code\u003e type to \u003ccode\u003essl_ca_certs\u003c/code\u003e by \u003ca href=\"https://github.com/rnv812\"\u003e\u003ccode\u003e@​rnv812\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2676\"\u003eKludex/uvicorn#2676\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LincolnPuzey\"\u003e\u003ccode\u003e@​LincolnPuzey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2669\"\u003eKludex/uvicorn#2669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rnv812\"\u003e\u003ccode\u003e@​rnv812\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2676\"\u003eKludex/uvicorn#2676\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.36.1...0.37.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.36.1...0.37.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.36.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRaise an exception when calling removed \u003ccode\u003eConfig.setup_event_loop()\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2709\"\u003eKludex/uvicorn#2709\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.36.0...0.36.1\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.36.0...0.36.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.36.0\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport custom IOLOOPs by \u003ca href=\"https://github.com/gnir-work\"\u003e\u003ccode\u003e@​gnir-work\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2435\"\u003eKludex/uvicorn#2435\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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[standard]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.40.0 (December 21, 2025)\u003c/h2\u003e\n\u003ch3\u003eRemove\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2772\"\u003e#2772\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.39.0 (December 21, 2025)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSend close frame on ASGI return for WebSockets (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2769\"\u003e#2769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExplicitly start ASGI run with empty context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2742\"\u003e#2742\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.38.0 (October 18, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2723\"\u003e#2723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.37.0 (September 23, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--timeout-worker-healthcheck\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2711\"\u003e#2711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eos.PathLike[str]\u003c/code\u003e type to \u003ccode\u003essl_ca_certs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2676\"\u003e#2676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.36.1 (September 23, 2025)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaise an exception when calling removed \u003ccode\u003eConfig.setup_event_loop()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2709\"\u003e#2709\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.36.0 (September 20, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport custom IOLOOPs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2435\"\u003e#2435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow to provide importable string in \u003ccode\u003e--http\u003c/code\u003e, \u003ccode\u003e--ws\u003c/code\u003e and \u003ccode\u003e--loop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2658\"\u003e#2658\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.35.0 (June 28, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eWebSocketsSansIOProtocol\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2540\"\u003e#2540\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefine help message for option \u003ccode\u003e--proxy-headers\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2653\"\u003e#2653\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.34.3 (June 1, 2025)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/9ff60042a53cd1bbfd5580ab0a91ea2d1d8f2f8c\"\u003e\u003ccode\u003e9ff6004\u003c/code\u003e\u003c/a\u003e Version 0.40.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2773\"\u003e#2773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/19df042c54c1562f058daf021d6f7bd1d5ed621c\"\u003e\u003ccode\u003e19df042\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2772\"\u003e#2772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/865ce7c0b4329a384273a6628eceb8d597989521\"\u003e\u003ccode\u003e865ce7c\u003c/code\u003e\u003c/a\u003e Run strict mypy on test suite (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2771\"\u003e#2771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4f40b8495772eb3a1ab3613ffd7be5156f8e1389\"\u003e\u003ccode\u003e4f40b84\u003c/code\u003e\u003c/a\u003e Version 0.39.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2770\"\u003e#2770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5692dfc416f9e65aee5028e55d119313d8d3ab0f\"\u003e\u003ccode\u003e5692dfc\u003c/code\u003e\u003c/a\u003e fix(websockets): Send close frame on ASGI return (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2769\"\u003e#2769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4194764a26824e5d8ddd1fa673df78dff82966e0\"\u003e\u003ccode\u003e4194764\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2763\"\u003e#2763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/d94bf28743de545d2d4b150f022203a5178cb705\"\u003e\u003ccode\u003ed94bf28\u003c/code\u003e\u003c/a\u003e explicitly start ASGI run with empty context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2742\"\u003e#2742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/8ae0bcbecb0a655789abf0c2dd4200848fc68a30\"\u003e\u003ccode\u003e8ae0bcb\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2748\"\u003e#2748\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4744ff9a1a4888c76ea160328cc9dcc2680c2c71\"\u003e\u003ccode\u003e4744ff9\u003c/code\u003e\u003c/a\u003e Add groups configuration for GitHub Actions (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2747\"\u003e#2747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/0391372376c264604a0475b0864bcbf3a8705352\"\u003e\u003ccode\u003e0391372\u003c/code\u003e\u003c/a\u003e chore(deps): bump astral-sh/setup-uv from 6.8.0 to 7.1.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2746\"\u003e#2746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.24.0...0.40.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.5.0 to 2.12.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.12.5 2025-11-26\u003c/h2\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.4 2025-11-05\u003c/h2\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required 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/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method of the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\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.12.3...v2.12.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.3 2025-10-17\u003c/h2\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the third 2.13 patch release, fixing issues related to the \u003ccode\u003eFieldInfo\u003c/code\u003e class, and reverting a change to the supported \u003ca href=\"https://docs.pydantic.dev/latest/concepts/validators/#model-validators\"\u003e\u003cem\u003eafter\u003c/em\u003e model validator\u003c/a\u003e function signatures.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required 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/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in\n\u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/bd2d0dd0137dfa1a8fdff2529b9dfb1547980150\"\u003e\u003ccode\u003ebd2d0dd\u003c/code\u003e\u003c/a\u003e Prepare release v2.12.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7d0302ec7ec2cf115de3450a615522875bdd8b56\"\u003e\u003ccode\u003e7d0302e\u003c/code\u003e\u003c/a\u003e Document security implications when using \u003ccode\u003ecreate_model()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e9ef980def726b6f59b6c495ddc9dc259a0228db\"\u003e\u003ccode\u003ee9ef980\u003c/code\u003e\u003c/a\u003e Fix typo in Standard Library Types documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f2c20c00c265a31a13c48f9bae923a87c829952e\"\u003e\u003ccode\u003ef2c20c0\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003epydantic-docs\u003c/code\u003e dev dependency, make use of versioning blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a76c1aa26f2d64a3fd080ac515d80832689197e8\"\u003e\u003ccode\u003ea76c1aa\u003c/code\u003e\u003c/a\u003e Update documentation about JSON Schema\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8cbc72ca489891e574fba45238ee8bd4f8e719a2\"\u003e\u003ccode\u003e8cbc72c\u003c/code\u003e\u003c/a\u003e Add documentation about custom \u003ccode\u003e__init__()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/99eba599069da137b3f708ffa74627f2b456ba73\"\u003e\u003ccode\u003e99eba59\u003c/code\u003e\u003c/a\u003e Add additional test for \u003ccode\u003eFieldInfo.get_default()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c71076988e507ea93844c77c3bf0bbb85a5716af\"\u003e\u003ccode\u003ec710769\u003c/code\u003e\u003c/a\u003e Special case \u003ccode\u003eMISSING\u003c/code\u003e sentinel in \u003ccode\u003esmart_deepcopy()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/20a9d771c210fd77d52366ac923258c4c199727f\"\u003e\u003ccode\u003e20a9d77\u003c/code\u003e\u003c/a\u003e Do not delete mock validator/serializer in \u003ccode\u003erebuild_dataclass()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c86515a3a8f2120148fab2eaedd3bc45925779d0\"\u003e\u003ccode\u003ec86515a\u003c/code\u003e\u003c/a\u003e Update parts of the model and \u003ccode\u003erevalidate_instances\u003c/code\u003e documentation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.5.0...v2.12.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.0.0 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env from FIFOs (Unix) by \u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) by \u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini by \u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory 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/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml by \u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv work reliably on python 3.13 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/pull/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\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 in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/552\"\u003etheskumar/python-dotenv#552\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/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.1] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove more config to \u003ccode\u003epyproject.toml\u003c/code\u003e, removed \u003ccode\u003esetup.cfg\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for reading \u003ccode\u003e.env\u003c/code\u003e from FIFOs (Unix) by [\u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.0] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade build system to use PEP 517 \u0026amp; PEP 518 to use \u003ccode\u003ebuild\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e by [\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/583\"\u003e#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by [\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for disabling of \u003ccode\u003eload_dotenv()\u003c/code\u003e using \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e env var. by [\u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/569\"\u003e#569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.0.1] - 2024-01-23\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGracefully handle code which has been imported from a zipfile (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/456\"\u003e#456\u003c/a\u003e by [\u003ca href=\"https://github.com/samwyma\"\u003e\u003ccode\u003e@​samwyma\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eAllow modules using \u003ccode\u003eload_dotenv\u003c/code\u003e to be reloaded when launched in a separate thread (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/497\"\u003e#497\u003c/a\u003e by [\u003ca href=\"https://github.com/freddyaboulton\"\u003e\u003ccode\u003e@​freddyaboulton\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eFix file not closed after deletion, handle error in the rewrite function (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/469\"\u003e#469\u003c/a\u003e by [\u003ca href=\"https://github.com/Qwerty-133\"\u003e\u003ccode\u003e@​Qwerty-133\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse pathlib.Path in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/466\"\u003e#466\u003c/a\u003e by [\u003ca href=\"https://github.com/eumiro\"\u003e\u003ccode\u003e@​eumiro\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eFix year in release date in changelog.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/454\"\u003e#454\u003c/a\u003e by [\u003ca href=\"https://github.com/jankislinger\"\u003e\u003ccode\u003e@​jankislinger\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eUse https in README links (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/474\"\u003e#474\u003c/a\u003e by [\u003ca href=\"https://github.com/Nicals\"\u003e\u003ccode\u003e@​Nicals\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/theskumar/python-dotenv/commit/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.0...v1.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httpx[socks]` from 0.25.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[socks]'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[socks]'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.25.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 `trio` from 0.22.2 to 0.32.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow \u003ccode\u003etrio.CapacityLimiter\u003c/code\u003e to have zero total_tokens. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3321\"\u003epython-trio/trio#3321\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where iterating over an \u003ccode\u003e@as_safe_channel\u003c/code\u003e-derived \u003ccode\u003eReceiveChannel\u003c/code\u003e would raise \u003ccode\u003etrio.BrokenResourceError\u003c/code\u003e if the channel was closed by another task. It now shuts down cleanly. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3331\"\u003epython-trio/trio#3331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etrio.lowlevel.Task.iter_await_frames\u003c/code\u003e now works on completed tasks, by returning an empty list of frames if the underlying coroutine has been closed. Previously, it raised an internal error. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3337\"\u003epython-trio/trio#3337\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals without deprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003epython-trio/trio#3345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDecrease indentation for exception groups raised in \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3332\"\u003epython-trio/trio#3332\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations and removals\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c0b394a55594dc39f353bae87e745083acff172e\"\u003e\u003ccode\u003ec0b394a\u003c/code\u003e\u003c/a\u003e Bump version to 0.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/95681199abcefe8ca1325e7e122f1005a56def7f\"\u003e\u003ccode\u003e9568119\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3348\"\u003e#3348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/f05398f17521e246dff608c6843f6970bcabc220\"\u003e\u003ccode\u003ef05398f\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/19196a83424dcce23f85bb7fc5dad73a4d943002\"\u003e\u003ccode\u003e19196a8\u003c/code\u003e\u003c/a\u003e Drop 3.9 support (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003e#3345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/bd3787fc766babe9a49ff2ca19c4627a642aee12\"\u003e\u003ccode\u003ebd3787f\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3347\"\u003e#3347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/43261ce646e3efda0620fc6cc0a38c850aeaf267\"\u003e\u003ccode\u003e43261ce\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3346\"\u003e#3346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/1425e7e5ea65e200a2bfe76756a38388a1981b83\"\u003e\u003ccode\u003e1425e7e\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3344\"\u003e#3344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/06e6f089225b2a34af9a03d3034a63f29416a9f4\"\u003e\u003ccode\u003e06e6f08\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/236a2094f239d42cb45db9975469e9eb9a5a77c7\"\u003e\u003ccode\u003e236a209\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/3ee08fe46826296e660722a8c57afa56eb242b11\"\u003e\u003ccode\u003e3ee08fe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/compare/v0.22.2...v0.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-socks` from 2.4.1 to 2.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/romis2012/python-socks/releases\"\u003epython-socks's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.8.0\u003c/h2\u003e\n\u003cp\u003eAdd \u003ccode\u003eProxyException\u003c/code\u003e base class\u003c/p\u003e\n\u003ch2\u003ev2.7.3\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.7.2\u003c/h2\u003e\n\u003cp\u003eAvoid leaking an open socket (trio) by \u003ca href=\"https://github.com/aaugustin\"\u003e\u003ccode\u003e@​aaugustin\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/romis2012/python-socks/issues/44\"\u003e#44\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003ev2.7.1\u003c/h2\u003e\n\u003cp\u003eClose socket on loop.sock_connect(...) error by \u003ca href=\"https://github.com/aaugustin\"\u003e\u003ccode\u003e@​aaugustin\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/romis2012/python-socks/issues/40\"\u003e#40\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003ev2.7.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.6.1\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.6.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.5.3\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.5.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.5.1\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.5.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.4.4\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.4.3\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.4.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\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/romis2012/python-socks/commit/50a3024a8ac10888085f963e44ab3a79d6574703\"\u003e\u003ccode\u003e50a3024\u003c/code\u003e\u003c/a\u003e Introduce ProxyException base class\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/0f573c4b35ef65c38e6ead5514e716e24820511c\"\u003e\u003ccode\u003e0f573c4\u003c/code\u003e\u003c/a\u003e Bump version, update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/053c2710c592a8580e8ef83cb920920cc7411f43\"\u003e\u003ccode\u003e053c271\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to test matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/b4e68da3204aa94559e5b3daafaabd131958283a\"\u003e\u003ccode\u003eb4e68da\u003c/code\u003e\u003c/a\u003e Update some dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/e769dba047ba30e4b323206da370119ab196e4a8\"\u003e\u003ccode\u003ee769dba\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/4555b273362327d3d150996aee849609706dd6aa\"\u003e\u003ccode\u003e4555b27\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/romis2012/python-socks/issues/44\"\u003e#44\u003c/a\u003e from aaugustin/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/5facc0e4f38e8f1e0bd9b8931e985a64a7e47dd6\"\u003e\u003ccode\u003e5facc0e\u003c/code\u003e\u003c/a\u003e Avoid leaking an open socket\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/8eb860cbb89c15d16cf94b99c842752ee90f3e0f\"\u003e\u003ccode\u003e8eb860c\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/2e4f5ca9fcb9e857c30ca8baa32f2190760e3490\"\u003e\u003ccode\u003e2e4f5ca\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/romis2012/python-socks/issues/40\"\u003e#40\u003c/a\u003e from aaugustin/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/f9454a5b36be776c8ce573d225ac519567e19152\"\u003e\u003ccode\u003ef9454a5\u003c/code\u003e\u003c/a\u003e Be more specific in exception catching\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/romis2012/python-socks/compare/v2.4.1...v2.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-jose[cryptography]` from 3.3.0 to 3.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mpdavis/python-jose/releases\"\u003epython-jose[cryptography]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.5.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.12 \u0026amp; 3.13\u003c/li\u003e\n\u003cli\u003eUpgrade to pyasn1 0.5.1+\u003c/li\u003e\n\u003cli\u003eUpgrade to pytest and other dependencies\u003c/li\u003e\n\u003cli\u003eAdd RTD config file to silence emailed deprecation warnings\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove get_random_bytes from cryptography backend\u003c/li\u003e\n\u003cli\u003eDo not use \u003ccode\u003eutc_now\u003c/code\u003e on module level\u003c/li\u003e\n\u003cli\u003eRemove key data (sensitive information) from JWKError exceptions\u003c/li\u003e\n\u003cli\u003eAdded possibility to call jwk.construct() with a private RSA key\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://pypi.org/project/python-jose/3.5.0/\"\u003ehttps://pypi.org/project/python-jose/3.5.0/\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.4.0\u003c/h2\u003e\n\u003ch3\u003eNews\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.6 and 3.7\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.10 and 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdating \u003ccode\u003eCryptographyAESKey::encrypt\u003c/code\u003e to generate 96 bit IVs for GCM block\ncipher mode\u003c/li\u003e\n\u003cli\u003eFix for PEM key comparisons caused by line lengths and new lines\u003c/li\u003e\n\u003cli\u003eFix for CVE-2024-33664 - JWE limited to 250KiB\u003c/li\u003e\n\u003cli\u003eFix for CVE-2024-33663 - signing JWT with public key is now forbidden\u003c/li\u003e\n\u003cli\u003eReplace usage of deprecated datetime.utcnow() with datetime.now(UTC)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHousekeeping\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Github Actions Workflows\u003c/li\u003e\n\u003cli\u003eUpdated to use tox 4.x\u003c/li\u003e\n\u003cli\u003eRevise codecov integration\u003c/li\u003e\n\u003cli\u003eFixed DeprecationWarnings\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/mpdavis/python-jose/blob/master/CHANGELOG.md\"\u003epython-jose[cryptography]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.5.0 -- 2025-05-28\u003c/h2\u003e\n\u003ch3\u003eNews\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.12 \u0026amp; 3.13\u003c/li\u003e\n\u003cli\u003eUpgrade to pyasn1 0.5.1+\u003c/li\u003e\n\u003cli\u003eUpgrade to pytest and other dependencies\u003c/li\u003e\n\u003cli\u003eAdd RTD config file to silence emailed deprecation warnings\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove get_random_bytes from cryptography backend\u003c/li\u003e\n\u003cli\u003eDo not use \u003ccode\u003eutc_now\u003c/code\u003e on module level\u003c/li\u003e\n\u003cli\u003eRemove key data (sensitive information) from JWKError exceptions\u003c/li\u003e\n\u003cli\u003eAdded possibility to call jwk.construct() with a private RSA key\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.4.0 -- 2025-02-14\u003c/h2\u003e\n\u003ch3\u003eNews\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.6 and 3.7\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.10 and 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdating \u003ccode\u003eCryptographyAESKey::encrypt\u003c/code\u003e to generate 96 bit IVs for GCM block\ncipher mode\u003c/li\u003e\n\u003cli\u003eFix for PEM key comparisons caused by line lengths and new lines\u003c/li\u003e\n\u003cli\u003eFix for CVE-2024-33664 - JWE limited to 250KiB\u003c/li\u003e\n\u003cli\u003eFix for CVE-2024-33663 - signing JWT with public key is now forbidden\u003c/li\u003e\n\u003cli\u003eReplace usage of deprecated datetime.utcnow() with datetime.now(UTC)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHousekeeping\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Github Actions Workflows\u003c/li\u003e\n\u003cli\u003eUpdated to use tox 4.x\u003c/li\u003e\n\u003cli\u003eRevise codecov integration\u003c/li\u003e\n\u003cli\u003eFixed DeprecationWarnings\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/mpdavis/python-jose/commit/018b310ddb8b50dcfd09a0c152117835a21dd656\"\u003e\u003ccode\u003e018b310\u003c/code\u003e\u003c/a\u003e Prepare release 3.5.0 (\u003ca href=\"https://redirect.github.com/mpdavis/python-jose/issues/388\"\u003e#388\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mpdavis/python-jose/commit/393c37476c728782dacc41cd79472627a5b198f3\"\u003e\u003ccode\u003e393c374\u003c/code\u003e\u003c/a\u003e Improve jwt.decode key doc (\u003ca href=\"https://redirect.github.com/mpdavis/python-jose/issues/198\"\u003e#198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mpdavis/python-jose/commit/50d43908ff5d3c6b48017c5d07b3b95c71ed89d9\"\u003e\u003ccode\u003e50d4390\u003c/code\u003e\u003c/a\u003e utils.py: fix types in docstrings for base64url_encode/decode (\u003ca href=\"https://redirect.github.com/mpdavis/python-jose/issues/269\"\u003e#269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mpdavis/python-jose/commit/8fd0b6318643edf9a7eee718d7f978fd04345e06\"\u003e\u003ccode\u003e8fd0b63\u003c/code\u003e\u003c/a\u003e Add RTD config file to silence emailed deprecation warnings (\u003ca href=\"https://redirect.github.com/mpdavis/python-jose/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://git...\n\n_Description has been truncated_","html_url":"https://github.com/JesseBrown1980/AI-healthCare-project/pull/200","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/JesseBrown1980%2FAI-healthCare-project/issues/200","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/200/packages"},{"uuid":"3774965870","node_id":"PR_kwDOQqqBcM67N3hF","number":28,"state":"open","title":"chore(deps)(deps-dev): bump trio from 0.23.2 to 0.32.0 in /packages/afo-core","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":8,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-01T17:56:04.000Z","updated_at":"2026-01-10T08:00:32.375Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps-dev)","packages":[{"name":"trio","old_version":"0.23.2","new_version":"0.32.0","repository_url":"https://github.com/python-trio/trio"}],"path":"/packages/afo-core","ecosystem":"pip"},"body":"Bumps [trio](https://github.com/python-trio/trio) from 0.23.2 to 0.32.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow \u003ccode\u003etrio.CapacityLimiter\u003c/code\u003e to have zero total_tokens. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3321\"\u003epython-trio/trio#3321\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where iterating over an \u003ccode\u003e@as_safe_channel\u003c/code\u003e-derived \u003ccode\u003eReceiveChannel\u003c/code\u003e would raise \u003ccode\u003etrio.BrokenResourceError\u003c/code\u003e if the channel was closed by another task. It now shuts down cleanly. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3331\"\u003epython-trio/trio#3331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etrio.lowlevel.Task.iter_await_frames\u003c/code\u003e now works on completed tasks, by returning an empty list of frames if the underlying coroutine has been closed. Previously, it raised an internal error. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3337\"\u003epython-trio/trio#3337\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals without deprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003epython-trio/trio#3345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDecrease indentation for exception groups raised in \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3332\"\u003epython-trio/trio#3332\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations and removals\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c0b394a55594dc39f353bae87e745083acff172e\"\u003e\u003ccode\u003ec0b394a\u003c/code\u003e\u003c/a\u003e Bump version to 0.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/95681199abcefe8ca1325e7e122f1005a56def7f\"\u003e\u003ccode\u003e9568119\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3348\"\u003e#3348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/f05398f17521e246dff608c6843f6970bcabc220\"\u003e\u003ccode\u003ef05398f\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/19196a83424dcce23f85bb7fc5dad73a4d943002\"\u003e\u003ccode\u003e19196a8\u003c/code\u003e\u003c/a\u003e Drop 3.9 support (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003e#3345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/bd3787fc766babe9a49ff2ca19c4627a642aee12\"\u003e\u003ccode\u003ebd3787f\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3347\"\u003e#3347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/43261ce646e3efda0620fc6cc0a38c850aeaf267\"\u003e\u003ccode\u003e43261ce\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3346\"\u003e#3346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/1425e7e5ea65e200a2bfe76756a38388a1981b83\"\u003e\u003ccode\u003e1425e7e\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3344\"\u003e#3344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/06e6f089225b2a34af9a03d3034a63f29416a9f4\"\u003e\u003ccode\u003e06e6f08\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/236a2094f239d42cb45db9975469e9eb9a5a77c7\"\u003e\u003ccode\u003e236a209\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/3ee08fe46826296e660722a8c57afa56eb242b11\"\u003e\u003ccode\u003e3ee08fe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/compare/v0.23.2...v0.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trio\u0026package-manager=pip\u0026previous-version=0.23.2\u0026new-version=0.32.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\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/lofibrainwav/AFO_Kingdom/pull/28","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/lofibrainwav%2FAFO_Kingdom/issues/28","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/28/packages"},{"uuid":"3765997268","node_id":"PR_kwDOCsSJAc66wSpb","number":73,"state":"open","title":"Bump the python-dependencies group with 20 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-12-28T20:50:16.000Z","updated_at":"2025-12-28T20:51:01.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-dependencies","update_count":20,"packages":[{"name":"cachetools","old_version":"6.2.1","new_version":"6.2.4","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.10.5","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"click","old_version":"8.3.0","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"flask-socketio","old_version":"5.5.1","new_version":"5.6.0","repository_url":"https://github.com/miguelgrinberg/flask-socketio"},{"name":"python-engineio","old_version":"4.12.3","new_version":"4.13.0","repository_url":"https://github.com/miguelgrinberg/python-engineio"},{"name":"python-socketio","old_version":"5.14.2","new_version":"5.16.0","repository_url":"https://github.com/miguelgrinberg/python-socketio"},{"name":"urllib3","old_version":"2.6.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"wsproto","old_version":"1.2.0","new_version":"1.3.2","repository_url":"https://github.com/python-hyper/wsproto"},{"name":"black","old_version":"25.9.0","new_version":"25.12.0","repository_url":"https://github.com/psf/black"},{"name":"cfgv","old_version":"3.4.0","new_version":"3.5.0","repository_url":"https://github.com/asottile/cfgv"},{"name":"cucumber-tag-expressions","old_version":"8.0.0","new_version":"8.1.0","repository_url":"https://github.com/cucumber/tag-expressions"},{"name":"nodeenv","old_version":"1.9.1","new_version":"1.10.0","repository_url":"https://github.com/ekalinin/nodeenv"},{"name":"platformdirs","old_version":"4.5.0","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pre-commit","old_version":"4.0.1","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest","old_version":"8.4.2","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.0.0","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytokens","old_version":"0.2.0","new_version":"0.3.0","repository_url":"https://github.com/tusharsadhwani/pytokens"},{"name":"selenium","old_version":"4.37.0","new_version":"4.39.0","repository_url":"https://github.com/SeleniumHQ/Selenium"},{"name":"trio","old_version":"0.31.0","new_version":"0.32.0","repository_url":"https://github.com/python-trio/trio"},{"name":"virtualenv","old_version":"20.35.3","new_version":"20.35.4","repository_url":"https://github.com/pypa/virtualenv"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 20 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [cachetools](https://github.com/tkem/cachetools) | `6.2.1` | `6.2.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.10.5` | `2025.11.12` |\n| [click](https://github.com/pallets/click) | `8.3.0` | `8.3.1` |\n| [flask-socketio](https://github.com/miguelgrinberg/flask-socketio) | `5.5.1` | `5.6.0` |\n| [python-engineio](https://github.com/miguelgrinberg/python-engineio) | `4.12.3` | `4.13.0` |\n| [python-socketio](https://github.com/miguelgrinberg/python-socketio) | `5.14.2` | `5.16.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.6.0` | `2.6.2` |\n| [wsproto](https://github.com/python-hyper/wsproto) | `1.2.0` | `1.3.2` |\n| [black](https://github.com/psf/black) | `25.9.0` | `25.12.0` |\n| [cfgv](https://github.com/asottile/cfgv) | `3.4.0` | `3.5.0` |\n| [cucumber-tag-expressions](https://github.com/cucumber/tag-expressions) | `8.0.0` | `8.1.0` |\n| [nodeenv](https://github.com/ekalinin/nodeenv) | `1.9.1` | `1.10.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.5.0` | `4.5.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.0.1` | `4.5.1` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.2` | `9.0.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.0.0` | `7.0.0` |\n| [pytokens](https://github.com/tusharsadhwani/pytokens) | `0.2.0` | `0.3.0` |\n| [selenium](https://github.com/SeleniumHQ/Selenium) | `4.37.0` | `4.39.0` |\n| [trio](https://github.com/python-trio/trio) | `0.31.0` | `0.32.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.35.3` | `20.35.4` |\n\nUpdates `cachetools` from 6.2.1 to 6.2.4\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\u003ev6.2.4 (2025-12-15)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix license information displayed on PyPI be using an updated\nversion of \u003ccode\u003etwine\u003c/code\u003e for uploading.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.2.3 (2025-12-12)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove documentation regarding \u003ccode\u003e@cachedmethod\u003c/code\u003e with \u003ccode\u003econdition\u003c/code\u003e\nparameter.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinor style and readability improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eModernize build environment.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate CI environment.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.2.2 (2025-11-13)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMinor improvements from GitHub Copilot code review.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove documentation.\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/tkem/cachetools/commit/9983ef8bd76758707ab9d197d4bd9fa47b4fb8bd\"\u003e\u003ccode\u003e9983ef8\u003c/code\u003e\u003c/a\u003e Bump version for uploading with updated twine.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/c9354683857b10b5e00cb93d06f7549ac8344fc0\"\u003e\u003ccode\u003ec935468\u003c/code\u003e\u003c/a\u003e Release v6.2.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/94d1099e6e79d34c436dc9f5d1cc039bcbf76738\"\u003e\u003ccode\u003e94d1099\u003c/code\u003e\u003c/a\u003e Prepare v6.2.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/af8b7d4ffa48d5947161ddb8c1ef1c60dda1e816\"\u003e\u003ccode\u003eaf8b7d4\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/372\"\u003e#372\u003c/a\u003e: Convert setup.cfg to pyproject.toml.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/20b8a192f666420a1986b793fd5846b89fdcd647\"\u003e\u003ccode\u003e20b8a19\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/370\"\u003e#370\u003c/a\u003e: Mention that using \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e with condition requires self to be...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/116fb4c3459067442d731e01a3db4694b50722f1\"\u003e\u003ccode\u003e116fb4c\u003c/code\u003e\u003c/a\u003e Minor style and readability improvements.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/96546ea34f8c77df009fb3bc019b72b03589c3fd\"\u003e\u003ccode\u003e96546ea\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.0 to 6.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/0106cc1d4764c9a94cd39a55579ce49bca9f4e1e\"\u003e\u003ccode\u003e0106cc1\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/4ee2600ab09b109f79d4ef08103240bf9f239b2d\"\u003e\u003ccode\u003e4ee2600\u003c/code\u003e\u003c/a\u003e Release v6.2.2.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/f1cec391fea1a1e407fe596b6e37b849adf7fce5\"\u003e\u003ccode\u003ef1cec39\u003c/code\u003e\u003c/a\u003e Minor improvements from GitHub Copilot code review.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v6.2.1...v6.2.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.10.5 to 2025.11.12\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/37ea150bee10958559f804f128de2fdd48e1ed45\"\u003e\u003ccode\u003e37ea150\u003c/code\u003e\u003c/a\u003e 2025.11.12 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2fa50bb698145e2401e17b23f6969d3952a6f7c1\"\u003e\u003ccode\u003e2fa50bb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4.6.2 to 5.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6cadb5304715523e57ea425f833aa3495a4e01e4\"\u003e\u003ccode\u003e6cadb53\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.10.05...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.0 to 8.3.1\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.3.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.1/\"\u003ehttps://pypi.org/project/click/8.3.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/28\"\u003ehttps://github.com/pallets/click/milestone/28\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3039\"\u003e#3039\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3055\"\u003e#3055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through the \u003ccode\u003eContext.invoke()\u003c/code\u003e method. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3066\"\u003e#3066\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3068\"\u003e#3068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect behavior for multiple parameters using the same name. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3071\"\u003e#3071\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3079\"\u003e#3079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is empty. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3019\"\u003e#3019\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3021\"\u003e#3021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to \u003ccode\u003etype_cast_value\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3069\"\u003e#3069\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3090\"\u003e#3090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters through the context inside parameter callbacks. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. :issue:\u003ccode\u003e3039\u003c/code\u003e\n:pr:\u003ccode\u003e3055\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through\nthe \u003ccode\u003eContext.invoke()\u003c/code\u003e method. :issue:\u003ccode\u003e3066\u003c/code\u003e :issue:\u003ccode\u003e3065\u003c/code\u003e :pr:\u003ccode\u003e3068\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect\nbehavior for multiple parameters using the same name. :issue:\u003ccode\u003e3071\u003c/code\u003e :pr:\u003ccode\u003e3079\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters\nthrough the context inside parameter callbacks. :issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3137\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is\nempty. :issue:\u003ccode\u003e3019\u003c/code\u003e :pr:\u003ccode\u003e3021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to\n\u003ccode\u003etype_cast_value\u003c/code\u003e. :issue:\u003ccode\u003e3069\u003c/code\u003e :pr:\u003ccode\u003e3090\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1d038f270701498433cb432f54db89f95f07a845\"\u003e\u003ccode\u003e1d038f2\u003c/code\u003e\u003c/a\u003e release version 8.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/03f3889f505d0c9ca4f9d6810f9e4ba2799f2a66\"\u003e\u003ccode\u003e03f3889\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3141\"\u003e#3141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3867781222cb63693ca67df94352d29d8e6e2770\"\u003e\u003ccode\u003e3867781\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b91bb9548a5617b1197add95e084d569f57149c3\"\u003e\u003ccode\u003eb91bb95\u003c/code\u003e\u003c/a\u003e Provide altered context to callbacks to hide \u003ccode\u003eUNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/437e1e3295c7ec979fc1bf285bb402ca20d847e7\"\u003e\u003ccode\u003e437e1e3\u003c/code\u003e\u003c/a\u003e Temporarily provide a fake context to the callback to hide \u003ccode\u003eUNSET\u003c/code\u003e values as ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ea70da487b05d6bb758d472a3a9ffab4a5b7fcd5\"\u003e\u003ccode\u003eea70da4\u003c/code\u003e\u003c/a\u003e Don't test using a file in docs/ (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3102\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e27b307462b725722f620c69dd1d5509c032d18a\"\u003e\u003ccode\u003ee27b307\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003euv run --all-extras pyright --verifytypes click\u003c/code\u003e pass (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a92c573f3195c9da3058eadf1735d38af186d22c\"\u003e\u003ccode\u003ea92c573\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3129\"\u003e#3129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bd131e1ab63da2281d6dd9b8205ad2eb5a085468\"\u003e\u003ccode\u003ebd131e1\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0b5c6b75f617e6ee2f9f6dcd071b8a4bf183d1ed\"\u003e\u003ccode\u003e0b5c6b7\u003c/code\u003e\u003c/a\u003e Add Best practices section  (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.0...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask-socketio` from 5.5.1 to 5.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/releases\"\u003eflask-socketio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 5.6.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\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/miguelgrinberg/Flask-SocketIO/blob/main/CHANGES.md\"\u003eflask-socketio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eFlask-SocketIO change log\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.6.0\u003c/strong\u003e - 2025-12-25\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse Flask test client's own \u003ccode\u003eenviron\u003c/code\u003e dict if it is available \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2142\"\u003e#2142\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/ccb9a758c634b668efedfe848880522f7a02fb3d\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13, 3.14 and pypy-3.11 to CI builds, drop 3.8 and 3.9 (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/1ad79405d3afa14b2f04b15f1fe8270ed0168132\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocumentation: Added an example using the \u003ccode\u003einit_app()\u003c/code\u003e method \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2110\"\u003e#2110\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/78dda9b64b275f9962d7a40de0db411b6aafac07\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.5.1\u003c/strong\u003e - 2025-01-06\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated version of python-socketio dependency \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2128\"\u003e#2128\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/c77c2e83e5c6baf552339884825230066cafd45e\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eOkke Harsta\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.5.0\u003c/strong\u003e - 2024-12-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a \u003ccode\u003ereason\u003c/code\u003e argument to the disconnect handler (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/01628b745f3e8fd1954d47a358a0d487dda57757\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade the code to more recent Python versions ([commit \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/1\"\u003e#1\u003c/a\u003e](\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/6a6734f71ab7c301a8cdc87fa78a515f0333a09b\"\u003ehttps://github.com/miguelgrinberg/flask-socketio/commit/6a6734f71ab7c301a8cdc87fa78a515f0333a09b\u003c/a\u003e) [commit \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2\"\u003e#2\u003c/a\u003e](\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/c3667e8489c91593d51ff35a2c013cd7bd0eb2c4\"\u003ehttps://github.com/miguelgrinberg/flask-socketio/commit/c3667e8489c91593d51ff35a2c013cd7bd0eb2c4\u003c/a\u003e))\u003c/li\u003e\n\u003cli\u003eRemove misleading warning about use of gevent-websocket in the documentation \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2122\"\u003e#2122\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/a1d3d61265fd45331ffd1957defa2f767e9c0115\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix typo in deployment documentation \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2119\"\u003e#2119\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/eeb3c4341185586673f479831153f5ff46f75f61\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eMaximilien Tirard\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.4.1\u003c/strong\u003e - 2024-10-01\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved a debugging statement (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/6841bd5c6ab29d12003ebca8171a7a9c8c2ffbf3\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.4.0\u003c/strong\u003e - 2024-09-30\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport catch-all events with \u003ccode\u003esocketio.on('*')\u003c/code\u003e \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2095\"\u003e#2095\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/45990f6721004d97fbac5b02edcd119c515155d6\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.3.7\u003c/strong\u003e - 2024-09-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent crash when client sends empty event (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/03512f2aecc27a3800d8d22031d6a663245d83d0\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle events with catch-all namespace \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2061\"\u003e#2061\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/f4ebcc798df28a0b9c91eb0b53ec3754a3ecdb3e\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd unit test for background tasks (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/84562cf876343150bb1c0b2431caf75b280e82cc\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.7, add Python 3.12, upgrade to pypy 3.10 (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/279bba4e373cc38aa7b7697ff47685235a48c477\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.3.6\u003c/strong\u003e - 2023-09-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixes in the test client to support recent changes in Socket.IO dependencies \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2006\"\u003e#2006\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/08411f99014d3680f1e2591b1e9ff1c5bfd0a5f5\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.3.5\u003c/strong\u003e - 2023-07-26\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent \u003ccode\u003eallow_unsafe_werkzeug\u003c/code\u003e option from being passed to web servers \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2001\"\u003e#2001\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/d6c6b8c336f533a9bac50cf3d7dbcc51669209b2\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.3.4\u003c/strong\u003e - 2023-05-03\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed cookie handling in Test Client for Flask \u0026gt;= 2.3 \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/1982\"\u003e#1982\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/70203246bcbc23715350ca5505527b31bf0693c1\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCorrectly handle ConnectionRefusedError in connect handler \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/1959\"\u003e#1959\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/64a18263cd3b864a5bb5b25bb5901350b8c1264d\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMore secure nginx configuration examples \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/1966\"\u003e#1966\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/9b861ceaa91bbe168376cf5cdac6c2917e448946\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eLorenzo Leonardini\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.3.3\u003c/strong\u003e - 2023-03-17\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/miguelgrinberg/Flask-SocketIO/commit/e24a2f81260b19009761866dd4e75dd22eab9158\"\u003e\u003ccode\u003ee24a2f8\u003c/code\u003e\u003c/a\u003e Release 5.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-SocketIO/commit/ccb9a758c634b668efedfe848880522f7a02fb3d\"\u003e\u003ccode\u003eccb9a75\u003c/code\u003e\u003c/a\u003e Use Flask test client's own environ dict if available (Fixes \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2142\"\u003e#2142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-SocketIO/commit/e05f135684732af6ec28476b7900b994785a15c4\"\u003e\u003ccode\u003ee05f135\u003c/code\u003e\u003c/a\u003e linter fixes #nolog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-SocketIO/commit/1ad79405d3afa14b2f04b15f1fe8270ed0168132\"\u003e\u003ccode\u003e1ad7940\u003c/code\u003e\u003c/a\u003e Add Python 3.13, 3.14 and pypy-3.11, drop 3.8 and 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-SocketIO/commit/78dda9b64b275f9962d7a40de0db411b6aafac07\"\u003e\u003ccode\u003e78dda9b\u003c/code\u003e\u003c/a\u003e Added an example using the init_app() method (Fixes \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2110\"\u003e#2110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-SocketIO/commit/932b9ab2d39a2cca88260b561b854c8e3a45946b\"\u003e\u003ccode\u003e932b9ab\u003c/code\u003e\u003c/a\u003e Version 5.5.2.dev0\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/compare/v5.5.1...v5.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-engineio` from 4.12.3 to 4.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/miguelgrinberg/python-engineio/releases\"\u003epython-engineio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 4.13.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-engineio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\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/miguelgrinberg/python-engineio/blob/main/CHANGES.md\"\u003epython-engineio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003epython-engineio change log\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.13.0\u003c/strong\u003e - 2025-12-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eApply escaping rules when parsing cookie values (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/04e7c4dd4792d1f551b71930ec771fbb96cdaaf2\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSeveral minor improvements to the aiohttp integration \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/419\"\u003e#419\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/f7cb71c9d7ef961e839f0eb1e570d76b4ce481da\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003ePaulWasTaken\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eClarify logging behavior in documentation \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/421\"\u003e#421\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/7fe1771e7463960f6ef08f9bcc22b42c8df1012b\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eZipFile\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eAddress deprecation warnings \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/422\"\u003e#422\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/b90cbf2b981c301968611b495dd548c4b0153223\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd 3.14 and pypy-3.11 CI builds (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/df3d9741495d93f4ad0f2ec9f7b3a1d795f2234c\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 and 3.9 from CI builds (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/697b50f5bbc68b2416778d537ed88fefc8b004f0\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.12.3\u003c/strong\u003e - 2025-09-28\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReset client queue upon disconnection \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/414\"\u003e#414\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/af57bf235b824f7f179a68ef61a03d76a2c56655\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e['*']\u003c/code\u003e in addition to \u003ccode\u003e'*'\u003c/code\u003e in the \u003ccode\u003ecors_allowed_origins\u003c/code\u003e option \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/410\"\u003e#410\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/d59658c22207a8ca9f8c9c28312887da8fd9ee29\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eWu Clan\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.12.2\u003c/strong\u003e - 2025-06-04\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport new monkey-patched gevent \u003ccode\u003eQueue\u003c/code\u003e class in the client \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/403\"\u003e#403\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/dcde006b62e004c8a1d29d3478c95fbffbb11122\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBetter support of the ASGI spec when interpreting WebSocket events \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/405\"\u003e#405\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/86cb4d22be1735f0346f35ecb912818479b74f05\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eEric Zhang\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.12.1\u003c/strong\u003e - 2025-05-11\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAccept empty binary values in the async server \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/404\"\u003e#404\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/83691dd46336f10de8f288b3aa23b60e211307e1\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd SPDX license identifier \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/401\"\u003e#401\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/b7f1e680f7d012294402c7e2a50d7dbcd9b2e40f\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eMarc Mueller\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.12.0\u003c/strong\u003e - 2025-04-12\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize packet parsing to avoid unnecessary calls to JSON parser \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/399\"\u003e#399\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/2dda203103d93bc751ab0967719f18318cffc8da\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePass \u003ccode\u003eenviron\u003c/code\u003e as a second argument to callable option \u003ccode\u003ecors_allowed_origins\u003c/code\u003e \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/398\"\u003e#398\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/5cb561101dfcaed06bc9d73486515da93ead1752\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003ewft-swas\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.11.2\u003c/strong\u003e - 2024-12-29\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix incorrect disconnection reason reported when browser page is closed (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/132fbd9b2728c342fb989d559fa8c24b324c3cf3\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.11.1\u003c/strong\u003e - 2024-12-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove debugging prints :blush: (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/ded35d682690bf8a74d6df1325ec5b7e28d6eed6\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.11.0\u003c/strong\u003e - 2024-12-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePass a \u003ccode\u003ereason\u003c/code\u003e argument to the disconnect handler \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/393\"\u003e#393\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/d782d9b9adc04fb691a490f29713239ad40de6c5\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003emaxPayload\u003c/code\u003e to connection response \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/392\"\u003e#392\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/12e423fecd15c17ddecbef396844634431c45836\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eHeySMMReseller \u0026amp; HeySMMProvider\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eClient option to disable timestamps in connection URLs \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/386\"\u003e#386\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/e8f9bbafc8c3ef8126dbe06343d0a30e32074627\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn disconnected sessions as 400 errors \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/391\"\u003e#391\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/55a9e46ff91aacfc04cb21683e12345e71fe2f98\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unicode errors in ASGI driver \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/389\"\u003e#389\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/44ce778c9a7e26d62254563e3de8c4a0c073bdc0\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplaced deprecated \u003ccode\u003eget_event_loop\u003c/code\u003e with \u003ccode\u003eget_running_loop\u003c/code\u003e \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/384\"\u003e#384\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/a6e5d92ca98b41d2054737c6c49fc0511da0c3c6\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove constructs required by older, now unsupported Python versions (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/2f257c3f83be91a464141ff4d8366cdcd7d9543b\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSwitched to pyenv-asyncio for async unit tests (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/08ea5ad5127e3505120ddc8ac12657f3f70f9fef\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdopted \u003ccode\u003eunittest.mock.AsyncMock\u003c/code\u003e in async unit tests instead of homegrown version (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/0a25a1d404dd8aab968e2b8aef870ad52c858dfc\"\u003ecommit\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/miguelgrinberg/python-engineio/commit/6685eb451036d24f653063d0dfe006e2829abf22\"\u003e\u003ccode\u003e6685eb4\u003c/code\u003e\u003c/a\u003e Release 4.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/697b50f5bbc68b2416778d537ed88fefc8b004f0\"\u003e\u003ccode\u003e697b50f\u003c/code\u003e\u003c/a\u003e Drop Python 3.8 and 3.9 from CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/b90cbf2b981c301968611b495dd548c4b0153223\"\u003e\u003ccode\u003eb90cbf2\u003c/code\u003e\u003c/a\u003e Address deprecations (Fixes \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/422\"\u003e#422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/7fe1771e7463960f6ef08f9bcc22b42c8df1012b\"\u003e\u003ccode\u003e7fe1771\u003c/code\u003e\u003c/a\u003e Clarify logging behavior (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/421\"\u003e#421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/acbbcbab0999b7d2bfe280b2017e87c9495b79b3\"\u003e\u003ccode\u003eacbbcba\u003c/code\u003e\u003c/a\u003e Update lower bound for Python version to 3.8 #nolog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/f7cb71c9d7ef961e839f0eb1e570d76b4ce481da\"\u003e\u003ccode\u003ef7cb71c\u003c/code\u003e\u003c/a\u003e Update aiohttp async driver. Use native public aiohttp API (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/419\"\u003e#419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/04e7c4dd4792d1f551b71930ec771fbb96cdaaf2\"\u003e\u003ccode\u003e04e7c4d\u003c/code\u003e\u003c/a\u003e Apply escaping rules when parsing cookie values\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/653ee1470ba07d3998fbffffeb26fa4e4f3f0d92\"\u003e\u003ccode\u003e653ee14\u003c/code\u003e\u003c/a\u003e Remove old build matrix exceptions #nolog (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/416\"\u003e#416\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/df3d9741495d93f4ad0f2ec9f7b3a1d795f2234c\"\u003e\u003ccode\u003edf3d974\u003c/code\u003e\u003c/a\u003e Add 3.14 and pypy-3.11 CI tasks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/58c37d48819a382c2c553365b1e1dbb10d382ed3\"\u003e\u003ccode\u003e58c37d4\u003c/code\u003e\u003c/a\u003e Version 4.12.4.dev0\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/miguelgrinberg/python-engineio/compare/v4.12.3...v4.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-socketio` from 5.14.2 to 5.16.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/releases\"\u003epython-socketio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 5.16.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.15.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.14.3\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\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/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003epython-socketio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003epython-socketio change log\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.16.0\u003c/strong\u003e - 2025-12-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAddress deprecation warnings (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/b235699d9b06564753c570b76055997e9d62a938\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 and 3.9 from CI builds (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/d0728d2f74538762dd551fa9cd0cd1fd5aedfa37\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.15.1\u003c/strong\u003e - 2025-12-16\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRestore support multiple arguments via pubsub emits \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1540\"\u003e#1540\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/c279f26bb8c9887c4ca99d4d81ad331c4844438c\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.15.0\u003c/strong\u003e - 2025-11-22\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRetry initial Redis connection \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1536\"\u003e#1534\u003c/a\u003e ([commit \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1\"\u003e#1\u003c/a\u003e](\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/1e903e173a2d7b04599c4f7f9630c1abbb531fad\"\u003ehttps://github.com/miguelgrinberg/python-socketio/commit/1e903e173a2d7b04599c4f7f9630c1abbb531fad\u003c/a\u003e) [commit \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/2\"\u003e#2\u003c/a\u003e](\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/5e898a9b93526e6e667767e54c60f4c84589989d\"\u003ehttps://github.com/miguelgrinberg/python-socketio/commit/5e898a9b93526e6e667767e54c60f4c84589989d\u003c/a\u003e))\u003c/li\u003e\n\u003cli\u003eCorrectly regenerate RabbitMQ binding after a connection failure \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1516\"\u003e#1516\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/c52e93b4a328d98a968bfbdec0cfd598b73ee913\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eGritty_dev\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eext_type\u003c/code\u003e in the \u003ccode\u003eMsgPackPacket\u003c/code\u003e class \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1521\"\u003e#1521\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/208925344a48485d2cd56e40eb74266c3bcb5311\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport sending \u003ccode\u003ebytesarray\u003c/code\u003es when using pub/sub managers (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/6c9b9974f72e2efdf62407ecab24ee6995448098\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix typos in documentation \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1520\"\u003e#1520\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/db3f1c2a0105c30cb833ddfca8f05fe4320468fd\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eLê Nam Khánh\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eImprovements to the logging documentation (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/b423d0e38eef559b7e81acb7e32059de305f982c\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.14.3\u003c/strong\u003e - 2025-10-29\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python's native \u003ccode\u003eConnectionRefusedError\u003c/code\u003e exception to reject a connection \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1515\"\u003e#1515\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/f3b18bde3f16437b223491d4c3e440ea37105fe3\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePush binary data to the aiopika client manager \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1514\"\u003e#1514\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/194e1b7f277b5f72e1de78d3f614e7b8b6c788ac\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.14.2\u003c/strong\u003e - 2025-10-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRestore binary message support in message queue setups \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1509\"\u003e#1509\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/bab4a10f48aaae11d7f832ebe5c30ad3f85d31b3\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix formatting of client connection error \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1507\"\u003e#1507\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/f298c9b54d76ab09ff72935937e1b9575bc45ffd\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd 3.14 and pypy-3.11 CI tasks (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/1f4cd3b025c294f25208ec3c05b5f8df6209e403\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove documentation of the \u003ccode\u003eBaseManager.get_participants()\u003c/code\u003e method (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/33722a0d96036f005188b07b8b46a5ef091fe65f\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.14.1\u003c/strong\u003e - 2025-10-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRestore support for \u003ccode\u003erediss://\u003c/code\u003e URLs, and add support for \u003ccode\u003evalkeys://\u003c/code\u003e as well (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/6e2d0de12bb4e4a99fdfc30bed0706ded620822c\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Redis connections using unix sockets \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1503\"\u003e#1503\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/a8deb3a8f3ee51d75c124157efa7fc9289fd592b\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eDarren Chang\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.14.0\u003c/strong\u003e - 2025-09-30\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReplace pickle with json in message queue communications \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1502\"\u003e#1502\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/53f6be094257ed81476b0e212c8cddd6d06ca39a\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Valkey in the Redis client managers \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1488\"\u003e#1488\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/36a89226a2fb18f876dcba48125a8c51904586ec\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003ephi-friday\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eKeep track of which namespaces failed to connect \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1496\"\u003e#1496\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/5dc2aea077469ad318e47b28a84845c5efb6bdcf\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed transport property of the simple clients to be a string as documented \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1499\"\u003e#1499\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/23556fb3dcb37074020494df40fb4495d47e7efe\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSimpleClient.call does not raise \u003ccode\u003eTimeoutError\u003c/code\u003e on timeout \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1501\"\u003e#1501\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/a59c6f520059eb095ab4472e5192ce3e486875d9\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eJames Thistlewood\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eWait for client to end background tasks on disconnect \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1500\"\u003e#1500\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/f61e0bec3750a83de619db9b779f9d93e449eade\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBetter error logging for the Redis managers \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1479\"\u003e#1479\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/b01b197df1ea5914fdaa2e12758e916ebd60162a\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eEugnee\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eChannel was not properly initialized in several pubsub client managers \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1476\"\u003e#1476\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/efd1247ed9ed61a61d6840dc2c8c92ab02031afb\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eEugnee\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eAdd message queue deployment recommendations for security (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/b3da354ed9eb46c0fb847c628b379ccae475a970\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing \u003ccode\u003easync\u003c/code\u003e on session examples for the async server \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1465\"\u003e#1465\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/5e04003dad0140fb1c6acff328e4215e62fbc58a\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eFunc\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eAdd SPDX license identifier \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1453\"\u003e#1453\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/81c80cddde06dd9561687c74e5769e25613282d7\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eMarc Mueller\u003c/strong\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/miguelgrinberg/python-socketio/commit/9e624b38c863efaacd104f2c0dd7125e12c8cac2\"\u003e\u003ccode\u003e9e624b3\u003c/code\u003e\u003c/a\u003e Release 5.16.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/d0728d2f74538762dd551fa9cd0cd1fd5aedfa37\"\u003e\u003ccode\u003ed0728d2\u003c/code\u003e\u003c/a\u003e Drop Python 3.8 and 3.9 from CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/b235699d9b06564753c570b76055997e9d62a938\"\u003e\u003ccode\u003eb235699\u003c/code\u003e\u003c/a\u003e Address deprecations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/412a6cf84960649d26d11f4aa33176bd94dbc213\"\u003e\u003ccode\u003e412a6cf\u003c/code\u003e\u003c/a\u003e Version 5.15.2.dev0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/c6eaca07bb70b42dc6dea5f03628a8df3b5a9ff7\"\u003e\u003ccode\u003ec6eaca0\u003c/code\u003e\u003c/a\u003e Release 5.15.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/c279f26bb8c9887c4ca99d4d81ad331c4844438c\"\u003e\u003ccode\u003ec279f26\u003c/code\u003e\u003c/a\u003e Support multiple arguments via pubsub emits (Fixes \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1539\"\u003e#1539\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1540\"\u003e#1540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/91553c1ac22b9a0cf7fe3d2205e0c011f8c8df12\"\u003e\u003ccode\u003e91553c1\u003c/code\u003e\u003c/a\u003e Bump django in /examples/server/wsgi/django_socketio (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1538\"\u003e#1538\u003c/a\u003e) #nolog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/692dca4747798e81f4505d4c1cbfe3ab9490368f\"\u003e\u003ccode\u003e692dca4\u003c/code\u003e\u003c/a\u003e Version 5.15.1.dev0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/a63007d17ad9beb6e4cd1da0d906ad9bea76d3ad\"\u003e\u003ccode\u003ea63007d\u003c/code\u003e\u003c/a\u003e Release 5.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/5e898a9b93526e6e667767e54c60f4c84589989d\"\u003e\u003ccode\u003e5e898a9\u003c/code\u003e\u003c/a\u003e Retry initial Redis connection (Fixes \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1534\"\u003e#1534\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/compare/v5.14.2...v5.16.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `urllib3` from 2.6.0 to 2.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/urllib3/urllib3/releases\"\u003eurllib3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.6.2\u003c/h2\u003e\n\u003ch2\u003e🚀 urllib3 is fundraising for HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support\"\u003eurllib3 is raising ~$40,000 USD\u003c/a\u003e to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects \u003ca href=\"https://opencollective.com/urllib3\"\u003eplease consider contributing financially\u003c/a\u003e to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.\u003c/p\u003e\n\u003cp\u003eThank you for your support.\u003c/p\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eHTTPResponse.read_chunked()\u003c/code\u003e to properly handle leftover data in the decoder's buffer when reading compressed chunked responses. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3734\"\u003eurllib3/urllib3#3734\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.6.1\u003c/h2\u003e\n\u003ch2\u003e🚀 urllib3 is fundraising for HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support\"\u003eurllib3 is raising ~$40,000 USD\u003c/a\u003e to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects \u003ca href=\"https://opencollective.com/urllib3\"\u003eplease consider contributing financially\u003c/a\u003e to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.\u003c/p\u003e\n\u003cp\u003eThank you for your support.\u003c/p\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore previously removed \u003ccode\u003eHTTPResponse.getheaders()\u003c/code\u003e and \u003ccode\u003eHTTPResponse.getheader()\u003c/code\u003e methods. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3731\"\u003e#3731\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/urllib3/urllib3/blob/main/CHANGES.rst\"\u003eurllib3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.6.2 (2025-12-11)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eHTTPResponse.read_chunked()\u003c/code\u003e to properly handle leftover data in\nthe decoder's buffer when reading compressed chunked responses.\n(\u003ccode\u003e[#3734](https://github.com/urllib3/urllib3/issues/3734) \u0026lt;https://github.com/urllib3/urllib3/issues/3734\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.6.1 (2025-12-08)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRestore previously removed \u003ccode\u003eHTTPResponse.getheaders()\u003c/code\u003e and\n\u003ccode\u003eHTTPResponse.getheader()\u003c/code\u003e methods.\n(\u003ccode\u003e[#3731](https://github.com/urllib3/urllib3/issues/3731) \u0026lt;https://github.com/urllib3/urllib3/issues/3731\u0026gt;\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/urllib3/urllib3/commit/83f8643ffb5b7f197457379148e2fa118ab0fcdc\"\u003e\u003ccode\u003e83f8643\u003c/code\u003e\u003c/a\u003e Release 2.6.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/571a9b7b894cee5733c7c2cf72fa260cf1f4b660\"\u003e\u003ccode\u003e571a9b7\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eHTTPResponse.read_chunked\u003c/code\u003e when leftover data is present in decoder's bu...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/bfe8e198a13800e3ee8ef8124a8928acb170c843\"\u003e\u003ccode\u003ebfe8e19\u003c/code\u003e\u003c/a\u003e Release 2.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/3ceeb84107946de22e9753fc1e6c075ab36d2c4c\"\u003e\u003ccode\u003e3ceeb84\u003c/code\u003e\u003c/a\u003e Restore \u003ccode\u003egetheaders()\u003c/code\u003e and \u003ccode\u003egetheader()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3732\"\u003e#3732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/urllib3/urllib3/compare/2.6.0...2.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `wsproto` from 1.2.0 to 1.3.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-hyper/wsproto/blob/main/CHANGELOG.rst\"\u003ewsproto's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.3.2 (2025-11-20)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix type hints to allow BytesMessage to accept bytes again, as well as\nbytearray.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.3.1 (2025-11-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd additional license identifier to pyproject.toml.\u003c/li\u003e\n\u003cli\u003eUse Python 3.13 to build the docs to match ReadTheDocs build environment.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.3.0 (2025-11-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRequire h11\u0026gt;=0.16 dependency.\u003c/li\u003e\n\u003cli\u003eFix \u0026quot;Upgrade\u0026quot; header value to match RFC.\u003c/li\u003e\n\u003cli\u003eAdd reason \u0026quot;Switching Protocols\u0026quot; to handshake response.\u003c/li\u003e\n\u003cli\u003eAdd docs for \u003ccode\u003ewsproto.Connection\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.12, 3.13, and 3.14.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7, 3.8, and 3.9.\u003c/li\u003e\n\u003cli\u003eImprove Python typing, specifically bytes vs. bytearray.\u003c/li\u003e\n\u003cli\u003eVarious linting, styling, and packaging improvements.\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-hyper/wsproto/commit/820701baf101b8c364a879440e1215da2fb0973f\"\u003e\u003ccode\u003e820701b\u003c/code\u003e\u003c/a\u003e Bump and release 1.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/wsproto/commit/b715abb6fad9ed45dd930711357dec67111caa21\"\u003e\u003ccode\u003eb715abb\u003c/code\u003e\u003c/a\u003e changelog entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/wsproto/commit/f4c1b0cade245f7e86e392f38040f3ca7ce4f475\"\u003e\u003ccode\u003ef4c1b0c\u003c/code\u003e\u003c/a\u003e don't unnecessarily construct bytearrays over and over again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/wsproto/commit/173c7d2c5601e3ac92275d1baad36b37f937ae2c\"\u003e\u003ccode\u003e173c7d2\u003c/code\u003e\u003c/a\u003e bytes are still a valid type here\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/wsproto/commit/f7afa864b304d5b1c18a22851a04eee8889f395d\"\u003e\u003ccode\u003ef7afa86\u003c/code\u003e\u003c/a\u003e Bump and release 1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/wsproto/commit/6702a7cfdf9290ae17672e2bb0206601af659f50\"\u003e\u003ccode\u003e6702a7c\u003c/code\u003e\u003c/a\u003e downgrade ReadTheDocs python version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/wsproto/commit/3bcb0f31add39fd7218ed15afee93ad5b35cc083\"\u003e\u003ccode\u003e3bcb0f3\u003c/code\u003e\u003c/a\u003e Add MIT license expression in \u003ccode\u003epyproject.toml\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/wsproto/commit/b8a65152237ba191f92ffdab7c14d4ab52b3b093\"\u003e\u003ccode\u003eb8a6515\u003c/code\u003e\u003c/a\u003e Bump and release 1.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/wsproto/commit/f2df768eaacde6803a1b3318914f395dbb259150\"\u003e\u003ccode\u003ef2df768\u003c/code\u003e\u003c/a\u003e fix Python versions for docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/wsproto/commit/230ac6b87dc69a655857b97b48151ef4479ee6cd\"\u003e\u003ccode\u003e230ac6b\u003c/code\u003e\u003c/a\u003e improve type handling for bytearray vs. bytes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-hyper/wsproto/compare/1.2.0...1.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `black` from 25.9.0 to 25.12.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.12.0\u003c/h2\u003e\n\u003cp\u003ePlease test out the draft 2026 style in version 26.1a1! This style will be finalized in\nthe January release (26.1.0). Most of the changes in \u003ccode\u003e--preview\u003c/code\u003e will be in the 2026\nstable style, but not all.\n\u003ca href=\"https://redirect.github.com/psf/black/issues/4042\"\u003ePlease share your feedback!\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis release (25.12.0) will still produce the 2025 style.\u003c/p\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBlack no longer supports running with Python 3.9 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4842\"\u003e#4842\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where comments preceding \u003ccode\u003e# fmt: off\u003c/code\u003e/\u003ccode\u003e# fmt: on\u003c/code\u003e blocks were incorrectly\nremoved, particularly affecting Jupytext's \u003ccode\u003e# %% [markdown]\u003c/code\u003e comments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4845\"\u003e#4845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when multiple \u003ccode\u003e# fmt: skip\u003c/code\u003e comments are used in a multi-part if-clause, on\nstring literals, or on dictionary entries with long lines (\u003ca href=\"https://redirect.github.com/psf/black/issues/4872\"\u003e#4872\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix possible crash when \u003ccode\u003efmt: \u003c/code\u003e directives aren't on the top level (\u003ca href=\"https://redirect.github.com/psf/black/issues/4856\"\u003e#4856\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003efmt: skip\u003c/code\u003e skipping the line after instead of the line it's on (\u003ca href=\"https://redirect.github.com/psf/black/issues/4855\"\u003e#4855\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unnecessary parentheses from the left-hand side of assignments while preserving\nmagic trailing commas and intentional multiline formatting (\u003ca href=\"https://redirect.github.com/psf/black/issues/4865\"\u003e#4865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003efix_fmt_skip_in_one_liners\u003c/code\u003e crashing on \u003ccode\u003ewith\u003c/code\u003e statements (\u003ca href=\"https://redirect.github.com/psf/black/issues/4853\"\u003e#4853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003efix_fmt_skip_in_one_liners\u003c/code\u003e crashing on annotated parameters (\u003ca href=\"https://redirect.github.com/psf/black/issues/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix new lines being added after imports with \u003ccode\u003e# fmt: skip\u003c/code\u003e on them (\u003ca href=\"https://redirect.github.com/psf/black/issues/4894\"\u003e#4894\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReleases now include arm64 Windows binaries and wheels (\u003ca href=\"https://redirect.github.com/psf/black/issues/4814\"\u003e#4814\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eIntegrations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eoutput-file\u003c/code\u003e input to GitHub Action \u003ccode\u003epsf/black\u003c/code\u003e to write formatter output to a\nfile for artifact capture and log cleanliness (\u003ca href=\"https://redirect.github.com/psf/black/issues/4824\"\u003e#4824\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e25.11.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnable base 3.14 support (\u003ca href=\"https://redirect.github.com/psf/black/issues/4804\"\u003e#4804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the new Python 3.14 t-string syntax introduced by PEP 750 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4805\"\u003e#4805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where comments between \u003ccode\u003e# fmt: off\u003c/code\u003e and \u003ccode\u003e# fmt: on\u003c/code\u003e were reformatted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4811\"\u003e#4811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eComments containing fmt directives now preserve their exact formatting instead of\nbeing normalized (\u003ca href=\"https://redirect.github.com/psf/black/issues/4811\"\u003e#4811\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/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.12.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBlack no longer supports running with Python 3.9 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4842\"\u003e#4842\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where comments preceding \u003ccode\u003e# fmt: off\u003c/code\u003e/\u003ccode\u003e# fmt: on\u003c/code\u003e blocks were incorrectly\nremoved, particularly affecting Jupytext's \u003ccode\u003e# %% [markdown]\u003c/code\u003e comments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4845\"\u003e#4845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when multiple \u003ccode\u003e# fmt: skip\u003c/code\u003e comments are used in a multi-part if-clause, on\nstring literals, or on dictionary entries with long lines (\u003ca href=\"https://redirect.github.com/psf/black/issues/4872\"\u003e#4872\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix possible crash when \u003ccode\u003efmt: \u003c/code\u003e directives aren't on the top level (\u003ca href=\"https://redirect.github.com/psf/black/issues/4856\"\u003e#4856\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003efmt: skip\u003c/code\u003e skipping the line after instead of the line it's on (\u003ca href=\"https://redirect.github.com/psf/black/issues/4855\"\u003e#4855\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unnecessary parentheses from the left-hand side of assignments while preserving\nmagic trailing commas and intentional multiline formatting (\u003ca href=\"https://redirect.github.com/psf/black/issues/4865\"\u003e#4865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003efix_fmt_skip_in_one_liners\u003c/code\u003e crashing on \u003ccode\u003ewith\u003c/code\u003e statements (\u003ca href=\"https://redirect.github.com/psf/black/issues/4853\"\u003e#4853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003efix_fmt_skip_in_one_liners\u003c/code\u003e crashing on annotated parameters (\u003ca href=\"https://redirect.github.com/psf/black/issues/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix new lines being added after imports with \u003ccode\u003e# fmt: skip\u003c/code\u003e on them (\u003ca href=\"https://redirect.github.com/psf/black/issues/4894\"\u003e#4894\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReleases now include arm64 Windows binaries and wheels (\u003ca href=\"https://redirect.github.com/psf/black/issues/4814\"\u003e#4814\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eIntegrations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eoutput-file\u003c/code\u003e input to GitHub Action \u003ccode\u003epsf/black\u003c/code\u003e to write formatter output to a\nfile for artifact capture and log cleanliness (\u003ca href=\"https://redirect.github.com/psf/black/issues/4824\"\u003e#4824\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e25.11.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnable base 3.14 support (\u003ca href=\"https://redirect.github.com/psf/black/issues/4804\"\u003e#4804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the new Python 3.14 t-string syntax introduced by PEP 750 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4805\"\u003e#4805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where comments between \u003ccode\u003e# fmt: off\u003c/code\u003e and \u003ccode\u003e# fmt: on\u003c/code\u003e were reformatted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4811\"\u003e#4811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eComments containing fmt directives now preserve their exact formatting instead of\nbeing normalized (\u003ca href=\"https://redirect.github.com/psf/black/issues/4811\"\u003e#4811\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove \u003ccode\u003emultiline_string_handling\u003c/code\u003e from \u003ccode\u003e--unstable\u003c/code\u003e to \u003ccode\u003e--preview\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4760\"\u003e#4760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug where module docstrings would be treated as normal strings if preceded by\ncomments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4764\"\u003e#4764\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/black/commit/782e5605c86aab56be6f905da10dcd3e463fd9c2\"\u003e\u003ccode\u003e782e560\u003c/code\u003e\u003c/a\u003e Pin actions/checkout@v5.0.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4895\"\u003e#4895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/f0f40945c1b0ebaa9ca733aca517610574c451d6\"\u003e\u003ccode\u003ef0f4094\u003c/code\u003e\u003c/a\u003e Fix new lines being added after imports with \u003ccode\u003e# fmt: skip\u003c/code\u003e on them (\u003ca href=\"https://redirect.github.com/psf/black/issues/4894\"\u003e#4894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/70fc194172184861aafb418c124824cae0fbe3b0\"\u003e\u003ccode\u003e70fc194\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix \u003ccode\u003e# fmt: skip\u003c/code\u003e ignored in deeply nested expressions\u0026quot; (\u003ca href=\"https://redirect.github.com/psf/black/issues/4893\"\u003e#4893\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/7044b145f4826e0d6e07178d89666856a8e37aff\"\u003e\u003ccode\u003e7044b14\u003c/code\u003e\u003c/a\u003e Prepare 25.12.0 release (\u003ca href=\"https://redirect.github.com/psf/black/issues/4891\"\u003e#4891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/5b470f0e577f3c39e0f7d668934d587c0733a652\"\u003e\u003ccode\u003e5b470f0\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003e# fmt: skip\u003c/code\u003e ignored in deeply nested expressions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4883\"\u003e#4883\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/1b342ef5b0433fc1ed61a7e05a65744bef706fc9\"\u003e\u003ccode\u003e1b342ef\u003c/code\u003e\u003c/a\u003e Fix crash when multiple \u003ccode\u003e# fmt: skip\u003c/code\u003e comments are used in multi-part if-clau...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/7b265f16634155dafcca65f6122ef7ed8d14a67f\"\u003e\u003ccode\u003e7b265f1\u003c/code\u003e\u003c/a\u003e Pin Hatch to hopefully fix Docker builds (\u003ca href=\"https://redirect.github.com/psf/black/issues/4878\"\u003e#4878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c9523f463fdc9d9f9f0e61ca92d9b37acdf0d8fc\"\u003e\u003ccode\u003ec9523f4\u003c/code\u003e\u003c/a\u003e Attempt to fix Docker build failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/4876\"\u003e#4876\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/0f376e0c35bcb29f87ce18eace30333a3e105841\"\u003e\u003ccode\u003e0f376e0\u003c/code\u003e\u003c/a\u003e Fix crashes when fmt directives are indented (\u003ca href=\"https://redirect.github.com/psf/black/issues/4856\"\u003e#4856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/a8bfcc1040fdfce2e02cdd85dc8bf4e7abe0462f\"\u003e\u003ccode\u003ea8bfcc1\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003efmt: skip\u003c/code\u003e skipping the line after instead of the line it's on (\u003ca href=\"https://redirect.github.com/psf/black/issues/4855\"\u003e#4855\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/25.9.0...25.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cfgv` from 3.4.0 to 3.5.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/c7342120ec8513671fb8dd54d8a14399dc59cd47\"\u003e\u003ccode\u003ec734212\u003c/code\u003e\u003c/a\u003e v3.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/d64e0cc2ba77dff75a4c15fb6cf5e6ed315dc80b\"\u003e\u003ccode\u003ed64e0cc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/cfgv/issues/158\"\u003e#158\u003c/a\u003e from asottile/key-value-map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/641559f162edff0c37277cd7c5ebd2b65292fad1\"\u003e\u003ccode\u003e641559f\u003c/code\u003e\u003c/a\u003e add KeyValueMap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/82e2f93a1554805a8938a6a3a588efe982e03019\"\u003e\u003ccode\u003e82e2f93\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/cfgv/issues/157\"\u003e#157\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/69cd02016f6a69de3a19a9741f16aa6d40120164\"\u003e\u003ccode\u003e69cd020\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/5ccc4d404d9a6a83bd3b12c1a24437db7ce8a081\"\u003e\u003ccode\u003e5ccc4d4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/cfgv/issues/156\"\u003e#156\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/2e7ffe560a5de38906821304378fe26ceb7a536c\"\u003e\u003ccode\u003e2e7ffe5\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/ef7849933897d28727e453646a5a632202724d41\"\u003e\u003ccode\u003eef78499\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/cfgv/issues/155\"\u003e#155\u003c/a\u003e from asottile/all-repos_autofix_all-repos-manual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/b34b882bba1f683e9e3da7b3ab97e3ee1607977f\"\u003e\u003ccode\u003eb34b882\u003c/code\u003e\u003c/a\u003e py310+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/724a279ea352c1883761e34e3f261c11be28f374\"\u003e\u003ccode\u003e724a279\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/cfgv/issues/154\"\u003e#154\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/asottile/cfgv/compare/v3.4.0...v3.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cucumber-tag-expressions` from 8.0.0 to 8.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/cucumber/tag-expressions/releases\"\u003ecucumber-tag-expressions's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev8.1.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[.NET] Add a .NET implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRender the empty tag expression as an empty string (\u003ca href=\"https://redirect.github.com/cucumber/tag-expressions/pull/222\"\u003e#222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for missing operands (\u003ca href=\"https://redirect.github.com/cucumber/tag-expressions/pull/221\"\u003e#221\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/cucumber/tag-expressions/blob/main/CHANGELOG.md\"\u003ecucumber-tag-expressions's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[8.1.0] - 2025-11-26\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[.NET] Add a .NET implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRender the empty tag expression as an empty string (\u003ca href=\"https://redirect.github.com/cucumber/tag-expressions/pull/222\"\u003e#222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for missing operands (\u003ca href=\"https://redirect.github.com/cucumber/tag-expressions/pull/221\"\u003e#221\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/cucumber/tag-expressions/commit/b9e8e62884b9df0b7d21f5f0f476110250b33d10\"\u003e\u003ccode\u003eb9e8e62\u003c/code\u003e\u003c/a\u003e Prepare release v8.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cucumber/tag-expressions/commit/0aae04bb75298f2e5c0adcd816d6e764d0fcb5c2\"\u003e\u003ccode\u003e0aae04b\u003c/code\u003e\u003c/a\u003e Fix naming in for dotnet (\u003ca href=\"https://redirect.github.com/cucumber/tag-expressions/issues/228\"\u003e#228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cucumber/tag-expressions/commit/0ddfd8bcb71cbec5c289f24e6fb4cbd15ae699d1\"\u003e\u003ccode\u003e0ddfd8b\u003c/code\u003e\u003c/a\u003e chore(deps): update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/cucumber/tag-expressions/issues/226\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cucumber/tag-expressions/commit/3a81137a11b38fdc4c97e834983c40372fd2f288\"\u003e\u003ccode\u003e3a81137\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency microsoft.net.test.sdk to 17.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cucumber/tag-expressions/commit/6890145d5d91e34a49ce521732e7cfa01bf48997\"\u003e\u003ccode\u003e6890145\u003c/code\u003e\u003c/a\u003e Update CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cucumber/tag-expressions/commit/3938cb76902c5eef29d7f74acaa9e096fb2073bb\"\u003e\u003ccode\u003e3938cb7\u003c/code\u003e\u003c/a\u003e Add Dotnet Implementation (\u003ca href=\"https://redirect.github.com/cucumber/tag-expressions/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cucumber/tag-expressions/commit/9de9e294cad9df087be7aa1885cee5c56a2f255e\"\u003e\u003ccode\u003e9de9e29\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency astral-sh/uv to v0.9.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cucumber/tag-expressions/commit/3f9757ccc2b722cf6abe52e3fbf1da244dfc10e7\"\u003e\u003ccode\u003e3f9757c\u003c/code\u003e\u003c/a\u003e Add a CI job running on PHP 8.5 (\u003ca href=\"https://redirect.github.com/cucumber/tag-expressions/issues/225\"\u003e#225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cucumber/tag-expressions/commit/b17009d1f1a7527ef210cf32ed0f389227080b34\"\u003e\u003ccode\u003eb17009d\u003c/code\u003e\u003c/a\u003e chore(deps): update stryker-js monorepo to v9.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cucumber/tag-expressions/commit/08caa3fbd7ad7f97634cda69d65622f4ccdc738e\"\u003e\u003ccode\u003e08caa3f\u003c/code\u003e\u003c/a\u003e chore(deps): update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/cucumber/tag-expressions/issues/224\"\u003e#224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/cucumber/tag-expressions/compare/v8.0.0...v8.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `nodeenv` from 1.9.1 to 1.10.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ekalinin/nodeenv/releases\"\u003enodeenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.10.0 - drop\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixed bugs 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse lowercase lookup for archmap by \u003ca href=\"https://github.com/robmoss2k\"\u003e\u003ccode\u003e@​robmoss2k\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ekalinin/nodeenv/pull/382\"\u003eekalinin/nodeenv#382\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements 🛠\u003c/h3\u003e\n\u003cul\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/ekalinin/nodeenv/pull/367\"\u003eekalinin/nodeenv#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd UV Virtual Environment support by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ekalinin/nodeenv/pull/386\"\u003eekalinin/nodeenv#386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sh instead of bash by \u003ca href=\"https://github.com/WhyNotHugo\"\u003e\u003ccode\u003e@​WhyNotHugo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ekalinin/nodeenv/pull/389\"\u003eekalinin/nodeenv#389\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace additional use of \u003ccode\u003ewhich(1)\u003c/code\u003e with \u003ccode\u003eshutil.which()\u003c/code\u003e by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ekalinin/nodeenv/pull/355\"\u003eekalinin/nodeenv#355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport leading \u003ccode\u003ev\u003c/code\u003e in \u003ccode\u003e.node-version\u003c/code\u003e by \u003ca href=\"https://github.com/nix6839\"\u003e\u003ccode\u003e@​nix6839\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.g...\n\n_Description has been truncated_","html_url":"https://github.com/williajm/flask_transport_ui/pull/73","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/williajm%2Fflask_transport_ui/issues/73","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/73/packages"},{"uuid":"3754366572","node_id":"PR_kwDOQTBUns66LC_L","number":243,"state":"closed","title":"deps(core)(deps): bump the minor-patches-catch-all group across 1 directory with 19 updates","user":"dependabot[bot]","labels":["priority-low","area-etl","dependencies","python","type-infra","python-core"],"assignees":["prototyp33"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-29T08:35:53.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-22T16:17:20.000Z","updated_at":"2025-12-29T08:35:54.000Z","time_to_close":577113,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(core)(deps): bump","group_name":"minor-patches-catch-all","update_count":19,"packages":[{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"soupsieve","old_version":"2.6","new_version":"2.8.1","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"itemadapter","old_version":"0.12.2","new_version":"0.13.0","repository_url":"https://github.com/scrapy/itemadapter"},{"name":"selenium","old_version":"4.29.0","new_version":"4.39.0","repository_url":"https://github.com/SeleniumHQ/Selenium"},{"name":"cachetools","old_version":"6.2.3","new_version":"6.2.4","repository_url":"https://github.com/tkem/cachetools"},{"name":"filelock","old_version":"3.20.0","new_version":"3.20.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"trio","old_version":"0.29.0","new_version":"0.32.0","repository_url":"https://github.com/python-trio/trio"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"wsproto","old_version":"1.2.0","new_version":"1.3.2","repository_url":"https://github.com/python-hyper/wsproto"},{"name":"pyparsing","old_version":"3.2.5","new_version":"3.3.0","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"tornado","old_version":"6.5.3","new_version":"6.5.4","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"narwhals","old_version":"2.13.0","new_version":"2.14.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"zeep","old_version":"4.2.1","new_version":"4.3.2","repository_url":"https://github.com/mvantellingen/python-zeep"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-patches-catch-all group with 19 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.6` | `2.8.1` |\n| [itemadapter](https://github.com/scrapy/itemadapter) | `0.12.2` | `0.13.0` |\n| [selenium](https://github.com/SeleniumHQ/Selenium) | `4.29.0` | `4.39.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `6.2.3` | `6.2.4` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.0` | `3.20.1` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [trio](https://github.com/python-trio/trio) | `0.29.0` | `0.32.0` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [wsproto](https://github.com/python-hyper/wsproto) | `1.2.0` | `1.3.2` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.5` | `3.3.0` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.3` | `6.5.4` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.13.0` | `2.14.0` |\n| [zeep](https://github.com/mvantellingen/python-zeep) | `4.2.1` | `4.3.2` |\n\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.4\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.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\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.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\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/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.1.31 to 2025.11.12\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/37ea150bee10958559f804f128de2fdd48e1ed45\"\u003e\u003ccode\u003e37ea150\u003c/code\u003e\u003c/a\u003e 2025.11.12 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2fa50bb698145e2401e17b23f6969d3952a6f7c1\"\u003e\u003ccode\u003e2fa50bb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4.6.2 to 5.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6cadb5304715523e57ea425f833aa3495a4e01e4\"\u003e\u003ccode\u003e6cadb53\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `soupsieve` from 2.6 to 2.8.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/soupsieve/releases\"\u003esoupsieve's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Changes in tests to accommodate latest Python HTML parser changes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Drop support for Python 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add support for Python 3.14.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Deploy with PyPI's \u0026quot;Trusted Publisher\u0026quot;.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.7\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add \u003ccode\u003e:open\u003c/code\u003e pseudo selector.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add \u003ccode\u003e:muted\u003c/code\u003e pseudo selector.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Recognize the following pseudo selectors: \u003ccode\u003e:autofill\u003c/code\u003e, \u003ccode\u003e:buffering\u003c/code\u003e, \u003ccode\u003e:fullscreen\u003c/code\u003e, \u003ccode\u003e:picture-in-picture\u003c/code\u003e,\n\u003ccode\u003e:popover-open\u003c/code\u003e, \u003ccode\u003e:seeking\u003c/code\u003e, \u003ccode\u003e:stalled\u003c/code\u003e, and \u003ccode\u003e:volume-locked\u003c/code\u003e. These selectors, while recognized, will not match any\nelement as they require a live environment to check element states and browser states. This just prevents Soup Sieve\nfrom failing when any of these selectors are specified.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: A number of existing pseudo-classes are no longer noted as experimental.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Typing fixes.\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/facelessuser/soupsieve/commit/f89979745e12e83dbb31dde910a0ad08e9c5c717\"\u003e\u003ccode\u003ef899797\u003c/code\u003e\u003c/a\u003e Adjust changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/1b964a850bb482cc183f3f70811b25487ba200ee\"\u003e\u003ccode\u003e1b964a8\u003c/code\u003e\u003c/a\u003e Switch to using Zensical for documents (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/286\"\u003e#286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/046ce54956a0c30120038561e53b40994d29de2c\"\u003e\u003ccode\u003e046ce54\u003c/code\u003e\u003c/a\u003e Adjustments for changes in HTML parser (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/285\"\u003e#285\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/bf937788f0c3ff9bb2ffffacef7ad8832d8da16e\"\u003e\u003ccode\u003ebf93778\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop Python 3.8 (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/283\"\u003e#283\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/d82b33b72dd2e905dc441babdd68c98c846c1501\"\u003e\u003ccode\u003ed82b33b\u003c/code\u003e\u003c/a\u003e Spelling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/2fe1c55af2e2b1f033220a741113dba220bb84c9\"\u003e\u003ccode\u003e2fe1c55\u003c/code\u003e\u003c/a\u003e Use \u0026quot;Trusted Publisher\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/a616022df73ddc5ecb71092155be9baba876b52d\"\u003e\u003ccode\u003ea616022\u003c/code\u003e\u003c/a\u003e Link license in readme\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/6b22489422a9a7080adb2f465b1e0eaf7672603d\"\u003e\u003ccode\u003e6b22489\u003c/code\u003e\u003c/a\u003e Add new selectors and move some existing selectors out of experimental (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/280\"\u003e#280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/48be2ee7e99d786d22187990e0d9751a07f3e038\"\u003e\u003ccode\u003e48be2ee\u003c/code\u003e\u003c/a\u003e Branch specifiers on badge do not work\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/fcb3aaf85d1842814abab3887a7d7c0860d85f77\"\u003e\u003ccode\u003efcb3aaf\u003c/code\u003e\u003c/a\u003e Actually update badge\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facelessuser/soupsieve/compare/2.6...2.8.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `itemadapter` from 0.12.2 to 0.13.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapy/itemadapter/blob/master/Changelog.md\"\u003eitemadapter's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e0.13.0 (2025-12-15)\u003c/h3\u003e\n\u003cp\u003eAdded support for Python 3.14 and removed support for \u003ca href=\"https://pypy.org/\"\u003ePyPy\u003c/a\u003e\n3.10.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eget_json_schema()\u003c/code\u003e no longer reports all \u003ccode\u003escrapy.Item\u003c/code\u003e fields as required.\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/scrapy/itemadapter/commit/47481554948a1af59b3676b7310b2a93e0b96212\"\u003e\u003ccode\u003e4748155\u003c/code\u003e\u003c/a\u003e Bump version: 0.12.2 → 0.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/bd8354658ce8bc974dfa83be7e4cf5f7e3313af4\"\u003e\u003ccode\u003ebd83546\u003c/code\u003e\u003c/a\u003e Release notes for 0.13.0 (\u003ca href=\"https://redirect.github.com/scrapy/itemadapter/issues/114\"\u003e#114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/640995a710369ecaec990b821867a106afc0a4ee\"\u003e\u003ccode\u003e640995a\u003c/code\u003e\u003c/a\u003e Make Scrapy fields always optional (\u003ca href=\"https://redirect.github.com/scrapy/itemadapter/issues/113\"\u003e#113\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/da9e9cc1f8d1638c33bee905f78bee18b9a157db\"\u003e\u003ccode\u003eda9e9cc\u003c/code\u003e\u003c/a\u003e Migrate tests to pytest asserts (\u003ca href=\"https://redirect.github.com/scrapy/itemadapter/issues/111\"\u003e#111\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/f3957f675cced9efa3ec6fefea374cc858b04f0c\"\u003e\u003ccode\u003ef3957f6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scrapy/itemadapter/issues/110\"\u003e#110\u003c/a\u003e from scrapy/py314\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/46902a4e91d8c2672c6443a5804e4f32e8c97008\"\u003e\u003ccode\u003e46902a4\u003c/code\u003e\u003c/a\u003e Drop some 3.13 CI jobs and PyPy 3.10.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/f18da42059c00158415d895c63213bac60adbd70\"\u003e\u003ccode\u003ef18da42\u003c/code\u003e\u003c/a\u003e Actually remove the \u0026quot;extra\u0026quot; CI job for 3.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/c5e432c2a07af66a912aca330c86be15d38d5902\"\u003e\u003ccode\u003ec5e432c\u003c/code\u003e\u003c/a\u003e Disable the pydantic job for 3.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/030e1795a04e025ec82cff988c36ee5a337020fd\"\u003e\u003ccode\u003e030e179\u003c/code\u003e\u003c/a\u003e Roll back pylint-per-file-ignores.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/6276de5e63fefa607ade6f29b78027acab47a6c7\"\u003e\u003ccode\u003e6276de5\u003c/code\u003e\u003c/a\u003e Add Python 3.14 RC2 to CI, bump tool versions.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapy/itemadapter/compare/v0.12.2...v0.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `selenium` from 4.29.0 to 4.39.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/SeleniumHQ/Selenium/releases\"\u003eselenium's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eSelenium 4.39.0\u003c/h2\u003e\n\u003ch2\u003eDetailed Changelogs by Component\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG\"\u003eJava\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES\"\u003ePython\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG\"\u003eDotNet\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES\"\u003eRuby\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md\"\u003eJavaScript\u003c/a\u003e\u003c/strong\u003e\n\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cul\u003e\n\u003cli\u003e[atoms] fix text node children are always considered as displayed \u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16284\"\u003e#16284\u003c/a\u003e by \u003ca href=\"https://github.com/joerg1985\"\u003e\u003ccode\u003e@​joerg1985\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16329\"\u003eSeleniumHQ/selenium#16329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[grid] Enhance UI with theme integration and improved status indicators by \u003ca href=\"https://github.com/VietND96\"\u003e\u003ccode\u003e@​VietND96\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16512\"\u003eSeleniumHQ/selenium#16512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py][bidi]: add emulation command - \u003ccode\u003eset_locale_override\u003c/code\u003e by \u003ca href=\"https://github.com/navin772\"\u003e\u003ccode\u003e@​navin772\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16504\"\u003eSeleniumHQ/selenium#16504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py][bidi]: add emulation command \u003ccode\u003eset_scripting_enabled\u003c/code\u003e by \u003ca href=\"https://github.com/navin772\"\u003e\u003ccode\u003e@​navin772\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16513\"\u003eSeleniumHQ/selenium#16513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Update docstrings to google pydoc format by \u003ca href=\"https://github.com/iampopovich\"\u003e\u003ccode\u003e@​iampopovich\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16511\"\u003eSeleniumHQ/selenium#16511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java][BiDi] implement \u003ccode\u003ebrowsingContext.downloadEnd\u003c/code\u003e event by \u003ca href=\"https://github.com/Delta456\"\u003e\u003ccode\u003e@​Delta456\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16347\"\u003eSeleniumHQ/selenium#16347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo and minor formatting changes in README.md by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16523\"\u003eSeleniumHQ/selenium#16523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Update docstrings (remove reST leftovers and resolve D200) by \u003ca href=\"https://github.com/iampopovich\"\u003e\u003ccode\u003e@​iampopovich\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16525\"\u003eSeleniumHQ/selenium#16525\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Fix docstring formatting and apply ruff linting rules by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16527\"\u003eSeleniumHQ/selenium#16527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Fix Ruff D417 warnings in docstrings by \u003ca href=\"https://github.com/iampopovich\"\u003e\u003ccode\u003e@​iampopovich\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16535\"\u003eSeleniumHQ/selenium#16535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Fix ruff D415 warnings in docstrings by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16536\"\u003eSeleniumHQ/selenium#16536\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py][bidi]: add \u003ccode\u003eset_screen_orientation_override\u003c/code\u003e command in Emulation by \u003ca href=\"https://github.com/navin772\"\u003e\u003ccode\u003e@​navin772\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16522\"\u003eSeleniumHQ/selenium#16522\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Fix D205 ruff warnings for docstrings and add type hints by \u003ca href=\"https://github.com/iampopovich\"\u003e\u003ccode\u003e@​iampopovich\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16537\"\u003eSeleniumHQ/selenium#16537\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py][bidi]: add \u003ccode\u003eset_download_behavior\u003c/code\u003e command by \u003ca href=\"https://github.com/navin772\"\u003e\u003ccode\u003e@​navin772\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16556\"\u003eSeleniumHQ/selenium#16556\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Bump pytest and dev dependencies by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16572\"\u003eSeleniumHQ/selenium#16572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[bazel] Move \u003ccode\u003erules_rust\u003c/code\u003e to \u003ccode\u003ebzlmod\u003c/code\u003e by \u003ca href=\"https://github.com/shs96c\"\u003e\u003ccode\u003e@​shs96c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16566\"\u003eSeleniumHQ/selenium#16566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ci] Make a PR for updating mirror file instead of pushing directly to trunk by \u003ca href=\"https://github.com/bonigarcia\"\u003e\u003ccode\u003e@​bonigarcia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16579\"\u003eSeleniumHQ/selenium#16579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ci] Update mirror info (2025-11-11T15:26:46Z) by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16578\"\u003eSeleniumHQ/selenium#16578\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ci] Revert latest changes related to the mirror workflow by \u003ca href=\"https://github.com/bonigarcia\"\u003e\u003ccode\u003e@​bonigarcia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16580\"\u003eSeleniumHQ/selenium#16580\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java]: refactor request interception tests and handle CORS by \u003ca href=\"https://github.com/navin772\"\u003e\u003ccode\u003e@​navin772\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16585\"\u003eSeleniumHQ/selenium#16585\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py][bidi]: enable download event tests for firefox by \u003ca href=\"https://github.com/navin772\"\u003e\u003ccode\u003e@​navin772\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16587\"\u003eSeleniumHQ/selenium#16587\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Fix more type annotations by \u003ca href=\"https://github.com/iampopovich\"\u003e\u003ccode\u003e@​iampopovich\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16551\"\u003eSeleniumHQ/selenium#16551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java][BiDi] implement \u003ccode\u003eemulation.setTimezoneOverride\u003c/code\u003e by \u003ca href=\"https://github.com/Delta456\"\u003e\u003ccode\u003e@​Delta456\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16530\"\u003eSeleniumHQ/selenium#16530\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[grid] Minimum Docker API 1.44 for Docker Engine v29+ in Dynamic Grid by \u003ca href=\"https://github.com/VietND96\"\u003e\u003ccode\u003e@​VietND96\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16591\"\u003eSeleniumHQ/selenium#16591\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow file modification time by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16589\"\u003eSeleniumHQ/selenium#16589\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py][bidi]: add emulation command \u003ccode\u003eset_user_agent_override\u003c/code\u003e by \u003ca href=\"https://github.com/navin772\"\u003e\u003ccode\u003e@​navin772\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16595\"\u003eSeleniumHQ/selenium#16595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[grid] Improve Docker client for Dynamic Grid by \u003ca href=\"https://github.com/VietND96\"\u003e\u003ccode\u003e@​VietND96\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16596\"\u003eSeleniumHQ/selenium#16596\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py]: reuse driver in case of bidi tests by \u003ca href=\"https://github.com/navin772\"\u003e\u003ccode\u003e@​navin772\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16597\"\u003eSeleniumHQ/selenium#16597\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[grid] Improve browser container labels and naming in Dynamic Grid by \u003ca href=\"https://github.com/VietND96\"\u003e\u003ccode\u003e@​VietND96\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16599\"\u003eSeleniumHQ/selenium#16599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[build] Upgrade rules_dotnet to 0.20.5 by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16592\"\u003eSeleniumHQ/selenium#16592\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [bidi] Simplify namespace for communications by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16602\"\u003eSeleniumHQ/selenium#16602\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Improve type hints with union syntax and native types by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16590\"\u003eSeleniumHQ/selenium#16590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Use double quotes in generate.py by \u003ca href=\"https://github.com/Delta456\"\u003e\u003ccode\u003e@​Delta456\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16607\"\u003eSeleniumHQ/selenium#16607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ci] Use pagination in mirror workflow to get all Selenium releases by \u003ca href=\"https://github.com/bonigarcia\"\u003e\u003ccode\u003e@​bonigarcia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16605\"\u003eSeleniumHQ/selenium#16605\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] Generate atoms statically by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16608\"\u003eSeleniumHQ/selenium#16608\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[nodejs] Update dev dependencies to fix vulnerabilities by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16610\"\u003eSeleniumHQ/selenium#16610\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java][BiDi] emulation: allow passing null to GeolocationOverride by \u003ca href=\"https://github.com/Delta456\"\u003e\u003ccode\u003e@​Delta456\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16594\"\u003eSeleniumHQ/selenium#16594\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/SeleniumHQ/selenium/commit/126f156aeef74660a72fa77efffc78adb1353620\"\u003e\u003ccode\u003e126f156\u003c/code\u003e\u003c/a\u003e [build] Prepare for release of Selenium 4.39.0 (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16672\"\u003e#16672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/080c81fb948cf52b074de02d43e328c3e2a4599a\"\u003e\u003ccode\u003e080c81f\u003c/code\u003e\u003c/a\u003e fix flaky Ruby test \u003ccode\u003edevtools_spec.rb\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/87fef04c132ef7e2aefe54a3ef07e3a315f0c64c\"\u003e\u003ccode\u003e87fef04\u003c/code\u003e\u003c/a\u003e [dotnet] [bidi] Remove browsing scoped events at core level (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16694\"\u003e#16694\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/d9d1d7933a3ec5f2a2da0bce388bf996f585537a\"\u003e\u003ccode\u003ed9d1d79\u003c/code\u003e\u003c/a\u003e [dotnet] [bidi] Always provide new json options for modules (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16691\"\u003e#16691\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/54f45d32e19a0bea807d1b63d3070b3200e59164\"\u003e\u003ccode\u003e54f45d3\u003c/code\u003e\u003c/a\u003e [dotnet] [bidi] BrowsingContext type as record with equality (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16692\"\u003e#16692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/fab7984c4a8d4a86da18e12d1a84b67a9ec3c234\"\u003e\u003ccode\u003efab7984\u003c/code\u003e\u003c/a\u003e [py] Bump urllib3 in packaging and dev dependencies (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16690\"\u003e#16690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/fb859ad4bac17765155f385ae8d24b225acef0c8\"\u003e\u003ccode\u003efb859ad\u003c/code\u003e\u003c/a\u003e [dotnet] [bidi] Stateful converters with hydration (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16670\"\u003e#16670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/cfd57e3f420c4f0724bc7b4584ba9856931dc189\"\u003e\u003ccode\u003ecfd57e3\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;[java] use \u003ccode\u003e--enable-chrome-logs\u003c/code\u003e to redirect browser I/O streams\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/efe5a4fdb477c0fa03438393ca3b8b991dd8c01d\"\u003e\u003ccode\u003eefe5a4f\u003c/code\u003e\u003c/a\u003e [java] Add JSpecify annotations to ChromiumDriver (Issue \u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/14291\"\u003e#14291\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16628\"\u003e#16628\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/966731074637d6250bf8a12ff85a174a03778ef6\"\u003e\u003ccode\u003e9667310\u003c/code\u003e\u003c/a\u003e [java] avoid ClassCastException for unexpected driver responses \u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16389\"\u003e#16389\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/SeleniumHQ/Selenium/compare/selenium-4.29.0...selenium-4.39.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 6.2.3 to 6.2.4\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\u003ev6.2.4 (2025-12-15)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix license information displayed on PyPI be using an updated\nversion of \u003ccode\u003etwine\u003c/code\u003e for uploading.\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/9983ef8bd76758707ab9d197d4bd9fa47b4fb8bd\"\u003e\u003ccode\u003e9983ef8\u003c/code\u003e\u003c/a\u003e Bump version for uploading with updated twine.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tkem/cachetools/compare/v6.2.3...v6.2.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.20.0 to 3.20.1\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.20.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2025-68146: Fix TOCTOU symlink vulnerability in lock file creation 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/461\"\u003etox-dev/filelock#461\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.20.0...3.20.1\"\u003ehttps://github.com/tox-dev/filelock/compare/3.20.0...3.20.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/tox-dev/filelock/commit/377f62251d7cdf30768cc9ee1eb31cea1551c71b\"\u003e\u003ccode\u003e377f622\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/460\"\u003e#460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/4724d7f8c3393ec1f048c93933e6e3e6ec321f0e\"\u003e\u003ccode\u003e4724d7f\u003c/code\u003e\u003c/a\u003e Fix TOCTOU symlink vulnerability in lock file creation (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/461\"\u003e#461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/cb69414a2327cf0a9887e12054d1dc112ee700af\"\u003e\u003ccode\u003ecb69414\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/459\"\u003e#459\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/0769294f14a6c62eea64741722f7acef5386b4cd\"\u003e\u003ccode\u003e0769294\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/458\"\u003e#458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/414193a188892bd376eb5c56eb45a9cf8ecc9284\"\u003e\u003ccode\u003e414193a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/457\"\u003e#457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/1456797beb94ad59e5627462ad29f7ed3a966626\"\u003e\u003ccode\u003e1456797\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/456\"\u003e#456\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/8d6bf90af313ac7fd6e41ef2b715d91dd6858f5c\"\u003e\u003ccode\u003e8d6bf90\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/455\"\u003e#455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f7edeebddf79c210db2a6af145d33849e93c5550\"\u003e\u003ccode\u003ef7edeeb\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/454\"\u003e#454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/fb0923562189078b524ad3bd978e5e743dea9b2f\"\u003e\u003ccode\u003efb09235\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/453\"\u003e#453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f5825d867707b432e1c93f85833ce8d3766c986c\"\u003e\u003ccode\u003ef5825d8\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/452\"\u003e#452\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.20.0...3.20.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `typing-extensions` from 4.12.2 to 4.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/typing_extensions/releases\"\u003etyping-extensions's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cp\u003eNo user-facing changes since 4.15.0rc1.\u003c/p\u003e\n\u003cp\u003eNew features since 4.14.1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.15.0rc1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.1\u003c/h2\u003e\n\u003ch1\u003eRelease 4.14.1 (July 4, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix usage of \u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e nested inside other types\n(e.g., \u003ccode\u003etyping.Type[typing_extensions.TypedDict]\u003c/code\u003e). This is not allowed by the\ntype system but worked on older versions, so we maintain support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.0\u003c/h2\u003e\n\u003cp\u003eThis release adds several new features, including experimental support for inline typed dictionaries (\u003ca href=\"https://peps.python.org/pep-0764/\"\u003ePEP 764\u003c/a\u003e) and sentinels (\u003ca href=\"https://peps.python.org/pep-0661/\"\u003ePEP 661\u003c/a\u003e), and support for changes in Python 3.14. In addition, Python 3.8 is no longer supported.\u003c/p\u003e\n\u003cp\u003eChanges since 4.14.0rc1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003e__or__\u003c/code\u003e and \u003ccode\u003e__ror__\u003c/code\u003e methods from \u003ccode\u003etyping_extensions.Sentinel\u003c/code\u003e\non Python versions \u0026lt;3.10. PEP 604 was introduced in Python 3.10, and\n\u003ccode\u003etyping_extensions\u003c/code\u003e does not generally attempt to backport PEP-604 methods\nto prior versions.\u003c/li\u003e\n\u003cli\u003eFurther update \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e with changes in Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanges included in 4.14.0rc1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8 (including PyPy-3.8). Patch by \u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eDo not attempt to re-export names that have been removed from \u003ccode\u003etyping\u003c/code\u003e,\nanticipating the removal of \u003ccode\u003etyping.no_type_check_decorator\u003c/code\u003e in Python 3.15.\nPatch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003etyping_extensions.Format\u003c/code\u003e, \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e, and\n\u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e to align\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/python/typing_extensions/blob/main/CHANGELOG.md\"\u003etyping-extensions's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 4.15.0 (August 25, 2025)\u003c/h1\u003e\n\u003cp\u003eNo user-facing changes since 4.15.0rc1.\u003c/p\u003e\n\u003ch1\u003eRelease 4.15.0rc1 (August 18, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.14.1 (July 4, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix usage of \u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e nested inside other types\n(e.g., \u003ccode\u003etyping.Type[typing_extensions.TypedDict]\u003c/code\u003e). This is not allowed by the\ntype system but worked on older versions, so we maintain support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.14.0 (June 2, 2025)\u003c/h1\u003e\n\u003cp\u003eChanges since 4.14.0rc1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003e__or__\u003c/code\u003e and \u003ccode\u003e__ror__\u003c/code\u003e methods from \u003ccode\u003etyping_extensions.Sentinel\u003c/code\u003e\non Python versions \u0026lt;3.10. PEP 604 was introduced in Python 3.10, and\n\u003ccode\u003etyping_extensions\u003c/code\u003e does not generally attempt to backport PEP-604 methods\nto prior versions.\u003c/li\u003e\n\u003cli\u003eFurther update \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e with changes in Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.14.0rc1 (May 24, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8 (including PyPy-3.8). Patch by \u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eDo not attempt to re-export names that have been removed from \u003ccode\u003etyping\u003c/code\u003e,\nanticipating the removal of \u003ccode\u003etyping.no_type_check_decorator\u003c/code\u003e in Python 3.15.\nPatch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003etyping_extensions.Format\u003c/code\u003e, \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e, and\n\u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e to align\nwith changes in Python 3.14. Patches by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eFix tests for Python 3.14 and 3.15. Patches by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for inline typed dictionaries (\u003ca href=\"https://peps.python.org/pep-0764/\"\u003ePEP 764\u003c/a\u003e).\nPatch by \u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.Reader\u003c/code\u003e and \u003ccode\u003etyping_extensions.Writer\u003c/code\u003e. Patch by\nSebastian Rittau.\u003c/li\u003e\n\u003cli\u003eAdd support for sentinels (\u003ca href=\"https://peps.python.org/pep-0661/\"\u003ePEP 661\u003c/a\u003e). Patch by\n\u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\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/python/typing_extensions/commit/9d1637e264b5c1a6b7acee3e907015f89b20c2c9\"\u003e\u003ccode\u003e9d1637e\u003c/code\u003e\u003c/a\u003e Prepare release 4.15.0 (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/4bd67c5be5d9443c7d33c314d02a56ee125eb88d\"\u003e\u003ccode\u003e4bd67c5\u003c/code\u003e\u003c/a\u003e Coverage: exclude some noise (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/656\"\u003e#656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/e589a26da73b075c5276bae40b86db1af0144f84\"\u003e\u003ccode\u003ee589a26\u003c/code\u003e\u003c/a\u003e Coverage: add detailed report to job summary (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/655\"\u003e#655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/67d37fed1298e050f74d5acc95b2621bd37837ad\"\u003e\u003ccode\u003e67d37fe\u003c/code\u003e\u003c/a\u003e Coverage: Implement fail_under (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/654\"\u003e#654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/e9ae26f5286edee9262727755ecb9ad16e999192\"\u003e\u003ccode\u003ee9ae26f\u003c/code\u003e\u003c/a\u003e Don't delete previous coverage comment (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/ac80bb728a3006fc88ef7373b92f0c25cfcc7895\"\u003e\u003ccode\u003eac80bb7\u003c/code\u003e\u003c/a\u003e Add Coverage workflow (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/623\"\u003e#623\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/abaaafd98c1cc7e5baf098ec287a3d22cb339670\"\u003e\u003ccode\u003eabaaafd\u003c/code\u003e\u003c/a\u003e Prepare release 4.15.0rc1 (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/650\"\u003e#650\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/98104053ea8d49bcdd247804e5fa9f73136acbd4\"\u003e\u003ccode\u003e9810405\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003e@disjoint_base\u003c/code\u003e (PEP 800) (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/634\"\u003e#634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/7ee9e05fd484d06899ce56e80f5e1aa4c760fc03\"\u003e\u003ccode\u003e7ee9e05\u003c/code\u003e\u003c/a\u003e Backport type_params fix from CPython (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/646\"\u003e#646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/1e8eb9c06ef51b3a1e1f05303a16feca13f5ed98\"\u003e\u003ccode\u003e1e8eb9c\u003c/code\u003e\u003c/a\u003e Do not refer to PEP 705 as being experimental (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/648\"\u003e#648\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/typing_extensions/compare/4.12.2...4.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `attrs` from 25.3.0 to 25.4.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/hynek/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env from FIFOs (Unix) by \u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) by \u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini by \u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory 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/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml by \u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv work reliably on python 3.13 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/pull/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\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 in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/552\"\u003etheskumar/python-dotenv#552\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/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.1] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove more config to \u003ccode\u003epyproject.toml\u003c/code\u003e, removed \u003ccode\u003esetup.cfg\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for reading \u003ccode\u003e.env\u003c/code\u003e from FIFOs (Unix) by [\u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.0] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade build system to use PEP 517 \u0026amp; PEP 518 to use \u003ccode\u003ebuild\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e by [\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/583\"\u003e#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by [\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for disabling of \u003ccode\u003eload_dotenv()\u003c/code\u003e using \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e env var. by [\u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/569\"\u003e#569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.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.11\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.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.11 (2025-10-12)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14, lowest supported version is Python 3.8.\u003c/li\u003e\n\u003cli\u003eVarious updates to packaging, including PEP 740 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ad949ee3052c2265c66e3df2dd8871a5832ba327\"\u003e\u003ccode\u003ead949ee\u003c/code\u003e\u003c/a\u003e Release v3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cae4ba779e0a543823894bd4136651c187944da8\"\u003e\u003ccode\u003ecae4ba7\u003c/code\u003e\u003c/a\u003e Second release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8adb305165c77c4a45d1568a70ead75d2197692c\"\u003e\u003ccode\u003e8adb305\u003c/code\u003e\u003c/a\u003e Add space in RST link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/74cb2b652bb06133b0c4ab52cc98221be63162cf\"\u003e\u003ccode\u003e74cb2b6\u003c/code\u003e\u003c/a\u003e Release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05dab09fdde5bbf7d52f757c4dc62e0ba934cca8\"\u003e\u003ccode\u003e05dab09\u003c/code\u003e\u003c/a\u003e Format idna-data with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/90eac78b737d26613776b490432fc6d926b15c55\"\u003e\u003ccode\u003e90eac78\u003c/code\u003e\u003c/a\u003e Apply ruff formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a31ce7ecc0b767e40abb5ce28744ac567b73f366\"\u003e\u003ccode\u003ea31ce7e\u003c/code\u003e\u003c/a\u003e Remove errant test vectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/81f03334211c78c1832991ce70ebafb3cbfbb79c\"\u003e\u003ccode\u003e81f0333\u003c/code\u003e\u003c/a\u003e Omit vectors known to be broken in test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a0f32578c0cac28c7ffbb4c860c92eb2b9b579bd\"\u003e\u003ccode\u003ea0f3257\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into unicode-16-uts46-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/38d98860e6a1ab92fd35ab09ea4739feabf339a3\"\u003e\u003ccode\u003e38d9886\u003c/code\u003e\u003c/a\u003e Remove extra UTS46 test vector\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.10...v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `h11` from 0.14.0 to 0.16.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/1c5b07581f058886c8bdd87adababd7d959dc7ca\"\u003e\u003ccode\u003e1c5b075\u003c/code\u003e\u003c/a\u003e this time for surer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/d9c369935e853a7ee1aeb7e481f6dddf9b9c9b8a\"\u003e\u003ccode\u003ed9c3699\u003c/code\u003e\u003c/a\u003e this time for sure...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/d91b9dd2290a25c8c3f5ec15feb57de5873e6e39\"\u003e\u003ccode\u003ed91b9dd\u003c/code\u003e\u003c/a\u003e blacken\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/5a4683ca466b59bbab9b19cfea20ee157b31cee0\"\u003e\u003ccode\u003e5a4683c\u003c/code\u003e\u003c/a\u003e Soothe mypy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/9c9567f0a92d13a83a8d8ebdbc757c8c2d384536\"\u003e\u003ccode\u003e9c9567f\u003c/code\u003e\u003c/a\u003e Bump version to 0.16.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/114803a29ce50116dc47951c690ad4892b1a36ed\"\u003e\u003ccode\u003e114803a\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/9462006f6ce4941661888228cbd4ac1ea80689b0\"\u003e\u003ccode\u003e9462006\u003c/code\u003e\u003c/a\u003e Bump version to 0.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/70a96bea8e55403e5d92db14c111432c6d7a8685\"\u003e\u003ccode\u003e70a96be\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-hyper/h11/issues/181\"\u003e#181\u003c/a\u003e from Julien00859/Julien00859/get_int_max_str_digits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/60782ad107e538b9312aac7e1c119c8358bf797c\"\u003e\u003ccode\u003e60782ad\u003c/code\u003e\u003c/a\u003e Reject Content-Length longer 1 billion TB\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/dff7cc397a26ed4acdedd92d1bda6c8f18a6ed9f\"\u003e\u003ccode\u003edff7cc3\u003c/code\u003e\u003c/a\u003e Validate Chunked-Encoding chunk footer\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-hyper/h11/compare/v0.14.0...v0.16.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `trio` from 0.29.0 to 0.32.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow \u003ccode\u003etrio.CapacityLimiter\u003c/code\u003e to have zero total_tokens. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3321\"\u003epython-trio/trio#3321\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where iterating over an \u003ccode\u003e@as_safe_channel\u003c/code\u003e-derived \u003ccode\u003eReceiveChannel\u003c/code\u003e would raise \u003ccode\u003etrio.BrokenResourceError\u003c/code\u003e if the channel was closed by another task. It now shuts down cleanly. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3331\"\u003epython-trio/trio#3331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etrio.lowlevel.Task.iter_await_frames\u003c/code\u003e now works on completed tasks, by returning an empty list of frames if the underlying coroutine has been closed. Previously, it raised an internal error. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3337\"\u003epython-trio/trio#3337\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals without deprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003epython-trio/trio#3345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDecrease indentation for exception groups raised in \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3332\"\u003epython-trio/trio#3332\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations and removals\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/summar...\n\n_Description has been truncated_","html_url":"https://github.com/prototyp33/barcelona-housing-demographics-analyzer/pull/243","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/prototyp33%2Fbarcelona-housing-demographics-analyzer/issues/243","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/243/packages"},{"uuid":"3606233577","node_id":"PR_kwDOQR4JXs6ycK5C","number":7,"state":"closed","title":"Build(deps): bump trio from 0.25.0 to 0.32.0 in /backend","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-11-12T20:18:25.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-10T05:50:14.000Z","updated_at":"2025-11-12T20:18:26.000Z","time_to_close":224891,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Build(deps)","packages":[{"name":"trio","old_version":"0.25.0","new_version":"0.32.0","repository_url":"https://github.com/python-trio/trio"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [trio](https://github.com/python-trio/trio) from 0.25.0 to 0.32.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow \u003ccode\u003etrio.CapacityLimiter\u003c/code\u003e to have zero total_tokens. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3321\"\u003epython-trio/trio#3321\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where iterating over an \u003ccode\u003e@as_safe_channel\u003c/code\u003e-derived \u003ccode\u003eReceiveChannel\u003c/code\u003e would raise \u003ccode\u003etrio.BrokenResourceError\u003c/code\u003e if the channel was closed by another task. It now shuts down cleanly. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3331\"\u003epython-trio/trio#3331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etrio.lowlevel.Task.iter_await_frames\u003c/code\u003e now works on completed tasks, by returning an empty list of frames if the underlying coroutine has been closed. Previously, it raised an internal error. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3337\"\u003epython-trio/trio#3337\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals without deprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003epython-trio/trio#3345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDecrease indentation for exception groups raised in \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3332\"\u003epython-trio/trio#3332\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations and removals\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c0b394a55594dc39f353bae87e745083acff172e\"\u003e\u003ccode\u003ec0b394a\u003c/code\u003e\u003c/a\u003e Bump version to 0.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/95681199abcefe8ca1325e7e122f1005a56def7f\"\u003e\u003ccode\u003e9568119\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3348\"\u003e#3348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/f05398f17521e246dff608c6843f6970bcabc220\"\u003e\u003ccode\u003ef05398f\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/19196a83424dcce23f85bb7fc5dad73a4d943002\"\u003e\u003ccode\u003e19196a8\u003c/code\u003e\u003c/a\u003e Drop 3.9 support (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003e#3345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/bd3787fc766babe9a49ff2ca19c4627a642aee12\"\u003e\u003ccode\u003ebd3787f\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3347\"\u003e#3347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/43261ce646e3efda0620fc6cc0a38c850aeaf267\"\u003e\u003ccode\u003e43261ce\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3346\"\u003e#3346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/1425e7e5ea65e200a2bfe76756a38388a1981b83\"\u003e\u003ccode\u003e1425e7e\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3344\"\u003e#3344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/06e6f089225b2a34af9a03d3034a63f29416a9f4\"\u003e\u003ccode\u003e06e6f08\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/236a2094f239d42cb45db9975469e9eb9a5a77c7\"\u003e\u003ccode\u003e236a209\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/3ee08fe46826296e660722a8c57afa56eb242b11\"\u003e\u003ccode\u003e3ee08fe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/compare/v0.25.0...v0.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trio\u0026package-manager=pip\u0026previous-version=0.25.0\u0026new-version=0.32.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\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/ProRenterv1/Renter/pull/7","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProRenterv1%2FRenter/issues/7","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/7/packages"},{"uuid":"3580530710","node_id":"PR_kwDOPaXyZc6xG61-","number":123,"state":"closed","title":"Bump trio from 0.31.0 to 0.32.0","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2025-11-28T00:46:00.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-03T04:43:05.000Z","updated_at":"2025-11-28T00:46:08.000Z","time_to_close":2145775,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"trio","old_version":"0.31.0","new_version":"0.32.0","repository_url":"https://github.com/python-trio/trio"}],"path":null,"ecosystem":"pip"},"body":"Bumps [trio](https://github.com/python-trio/trio) from 0.31.0 to 0.32.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow \u003ccode\u003etrio.CapacityLimiter\u003c/code\u003e to have zero total_tokens. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3321\"\u003epython-trio/trio#3321\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where iterating over an \u003ccode\u003e@as_safe_channel\u003c/code\u003e-derived \u003ccode\u003eReceiveChannel\u003c/code\u003e would raise \u003ccode\u003etrio.BrokenResourceError\u003c/code\u003e if the channel was closed by another task. It now shuts down cleanly. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3331\"\u003epython-trio/trio#3331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etrio.lowlevel.Task.iter_await_frames\u003c/code\u003e now works on completed tasks, by returning an empty list of frames if the underlying coroutine has been closed. Previously, it raised an internal error. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3337\"\u003epython-trio/trio#3337\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals without deprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003epython-trio/trio#3345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDecrease indentation for exception groups raised in \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3332\"\u003epython-trio/trio#3332\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/python-trio/trio/commit/c0b394a55594dc39f353bae87e745083acff172e\"\u003e\u003ccode\u003ec0b394a\u003c/code\u003e\u003c/a\u003e Bump version to 0.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/95681199abcefe8ca1325e7e122f1005a56def7f\"\u003e\u003ccode\u003e9568119\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3348\"\u003e#3348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/f05398f17521e246dff608c6843f6970bcabc220\"\u003e\u003ccode\u003ef05398f\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/19196a83424dcce23f85bb7fc5dad73a4d943002\"\u003e\u003ccode\u003e19196a8\u003c/code\u003e\u003c/a\u003e Drop 3.9 support (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003e#3345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/bd3787fc766babe9a49ff2ca19c4627a642aee12\"\u003e\u003ccode\u003ebd3787f\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3347\"\u003e#3347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/43261ce646e3efda0620fc6cc0a38c850aeaf267\"\u003e\u003ccode\u003e43261ce\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3346\"\u003e#3346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/1425e7e5ea65e200a2bfe76756a38388a1981b83\"\u003e\u003ccode\u003e1425e7e\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3344\"\u003e#3344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/06e6f089225b2a34af9a03d3034a63f29416a9f4\"\u003e\u003ccode\u003e06e6f08\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/236a2094f239d42cb45db9975469e9eb9a5a77c7\"\u003e\u003ccode\u003e236a209\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/3ee08fe46826296e660722a8c57afa56eb242b11\"\u003e\u003ccode\u003e3ee08fe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trio\u0026package-manager=pip\u0026previous-version=0.31.0\u0026new-version=0.32.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\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/Solders-Girdles/GPT-Trader/pull/123","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Solders-Girdles%2FGPT-Trader/issues/123","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/123/packages"},{"uuid":"3580334805","node_id":"PR_kwDOPUOpW86xGRgA","number":2607,"state":"closed","title":"chore(deps): bump trio from 0.30.0 to 0.32.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-11-04T13:54:15.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-03T02:36:17.000Z","updated_at":"2025-11-04T13:54:22.000Z","time_to_close":127078,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"trio","old_version":"0.30.0","new_version":"0.32.0","repository_url":"https://github.com/python-trio/trio"}],"path":null,"ecosystem":"pip"},"body":"Bumps [trio](https://github.com/python-trio/trio) from 0.30.0 to 0.32.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow \u003ccode\u003etrio.CapacityLimiter\u003c/code\u003e to have zero total_tokens. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3321\"\u003epython-trio/trio#3321\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where iterating over an \u003ccode\u003e@as_safe_channel\u003c/code\u003e-derived \u003ccode\u003eReceiveChannel\u003c/code\u003e would raise \u003ccode\u003etrio.BrokenResourceError\u003c/code\u003e if the channel was closed by another task. It now shuts down cleanly. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3331\"\u003epython-trio/trio#3331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etrio.lowlevel.Task.iter_await_frames\u003c/code\u003e now works on completed tasks, by returning an empty list of frames if the underlying coroutine has been closed. Previously, it raised an internal error. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3337\"\u003epython-trio/trio#3337\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals without deprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003epython-trio/trio#3345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDecrease indentation for exception groups raised in \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3332\"\u003epython-trio/trio#3332\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations and removals\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c0b394a55594dc39f353bae87e745083acff172e\"\u003e\u003ccode\u003ec0b394a\u003c/code\u003e\u003c/a\u003e Bump version to 0.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/95681199abcefe8ca1325e7e122f1005a56def7f\"\u003e\u003ccode\u003e9568119\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3348\"\u003e#3348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/f05398f17521e246dff608c6843f6970bcabc220\"\u003e\u003ccode\u003ef05398f\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/19196a83424dcce23f85bb7fc5dad73a4d943002\"\u003e\u003ccode\u003e19196a8\u003c/code\u003e\u003c/a\u003e Drop 3.9 support (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003e#3345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/bd3787fc766babe9a49ff2ca19c4627a642aee12\"\u003e\u003ccode\u003ebd3787f\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3347\"\u003e#3347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/43261ce646e3efda0620fc6cc0a38c850aeaf267\"\u003e\u003ccode\u003e43261ce\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3346\"\u003e#3346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/1425e7e5ea65e200a2bfe76756a38388a1981b83\"\u003e\u003ccode\u003e1425e7e\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3344\"\u003e#3344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/06e6f089225b2a34af9a03d3034a63f29416a9f4\"\u003e\u003ccode\u003e06e6f08\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/236a2094f239d42cb45db9975469e9eb9a5a77c7\"\u003e\u003ccode\u003e236a209\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/3ee08fe46826296e660722a8c57afa56eb242b11\"\u003e\u003ccode\u003e3ee08fe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trio\u0026package-manager=pip\u0026previous-version=0.30.0\u0026new-version=0.32.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\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/arthexis/arthexis/pull/2607","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/arthexis%2Farthexis/issues/2607","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2607/packages"},{"uuid":"3525262409","node_id":"PR_kwDOQEMOZs6uRACa","number":5,"state":"open","title":"Bump trio from 0.25.0 to 0.31.0","user":"dependabot[bot]","labels":["Stale"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-10-17T09:33:11.000Z","updated_at":"2026-01-16T01:45:00.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"trio","old_version":"0.25.0","new_version":"0.31.0","repository_url":"https://github.com/python-trio/trio"}],"path":null,"ecosystem":"pip"},"body":"Bumps [trio](https://github.com/python-trio/trio) from 0.25.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/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003ebool(trio.Event)\u003c/code\u003e and have it raise a \u003ccode\u003eDeprecationWarning\u003c/code\u003e and tell users to use \u003ccode\u003etrio.Event.is_set\u003c/code\u003e instead. This is an alternative to \u003ccode\u003emypy --enable-error-code=truthy-bool\u003c/code\u003e for users who don't use type checking. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3322\"\u003epython-trio/trio#3322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen misnesting nurseries you now get a helpful \u003ccode\u003eRuntimeError\u003c/code\u003e instead of a catastrophic \u003ccode\u003eTrioInternalError\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3307\"\u003epython-trio/trio#3307\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.30.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.29.0...v0.30.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.29.0...v0.30.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e@trio.as_safe_channel\u003c/code\u003e, a wrapper that can be used to make async generators safe.\nThis will be the suggested fix for the flake8-async lint rule \u003ccode\u003eASYNC900\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3197\"\u003epython-trio/trio#3197\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow \u003ccode\u003etrio\u003c/code\u003e to be a \u003ccode\u003etypes.ModuleType\u003c/code\u003e and still have deprecated attributes. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/2135\"\u003epython-trio/trio#2135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed socket module for some older systems which lack \u003ccode\u003esocket.AI_NUMERICSERV\u003c/code\u003e.\nNow trio works on legacy (pre-Lion) macOS. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3133\"\u003epython-trio/trio#3133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate type hints for \u003ccode\u003etrio.run_process\u003c/code\u003e and \u003ccode\u003etrio.lowlevel.open_process\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3183\"\u003epython-trio/trio#3183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't mutate the global runner when MockClock is created. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3205\"\u003epython-trio/trio#3205\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/python-trio/trio/commit/94b7244505212061e21507c84725ef28be2705dd\"\u003e\u003ccode\u003e94b7244\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/439de50f5e3c9a718a2b4ed5790f27198de33e13\"\u003e\u003ccode\u003e439de50\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/cc148cfc0f23934aa603012b4f152c990e375f62\"\u003e\u003ccode\u003ecc148cf\u003c/code\u003e\u003c/a\u003e Suppress GeneratorExit from \u003ccode\u003e.aclose()\u003c/code\u003e for \u003ccode\u003eas_safe_channel\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3325\"\u003e#3325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/fc352b2b8ee84071273142375d8babb44333d115\"\u003e\u003ccode\u003efc352b2\u003c/code\u003e\u003c/a\u003e check for nursery misnesting on task exit (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/5bfba27b23f9a1f1bac86880b341bcfab54e43f2\"\u003e\u003ccode\u003e5bfba27\u003c/code\u003e\u003c/a\u003e Improve REPL KI (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3030\"\u003e#3030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/7cc7f6b9249f654627fb6b6737115a0900704c19\"\u003e\u003ccode\u003e7cc7f6b\u003c/code\u003e\u003c/a\u003e Define \u003ccode\u003etrio.Event.__bool__()\u003c/code\u003e to reduce bugs (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3322\"\u003e#3322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/8dd7d8ea38346b5effdfcc0669b356380eb670c9\"\u003e\u003ccode\u003e8dd7d8e\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3323\"\u003e#3323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/02c3794913a04a030f1f2ea76fb67b69abd90c3c\"\u003e\u003ccode\u003e02c3794\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003etyping_extensions\u003c/code\u003e requirement\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c3a0a762c343e5e4876725da18714bc79f38314f\"\u003e\u003ccode\u003ec3a0a76\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e,\u003c/code\u003e -\u0026gt; \u003ccode\u003e;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/e34ce248d6d1713a1986d13c93f2f49dda457228\"\u003e\u003ccode\u003ee34ce24\u003c/code\u003e\u003c/a\u003e Add message properly\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/compare/v0.25.0...v0.31.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trio\u0026package-manager=pip\u0026previous-version=0.25.0\u0026new-version=0.31.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR 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 merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\n\u003e **Note**\n\u003e Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n","html_url":"https://github.com/makhresearch/YOLOv8-ArchEx/pull/5","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/makhresearch%2FYOLOv8-ArchEx/issues/5","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/5/packages"},{"uuid":"2891118841","node_id":"PR_kwDOIsJvGs6sUvj5","number":454,"state":"open","title":"Bump the python-packages group across 1 directory with 27 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-06T17:08:47.000Z","updated_at":"2025-10-06T17:08:48.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":27,"packages":[{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.0","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"fonttools","old_version":"4.57.0","new_version":"4.60.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"lxml","old_version":"5.3.2","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"packaging","old_version":"24.2","new_version":"25.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.7","new_version":"4.4.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"selenium","old_version":"4.31.0","new_version":"4.36.0","repository_url":"https://github.com/SeleniumHQ/Selenium"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.43","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"sqlalchemy-cockroachdb","old_version":"2.0.2","new_version":"2.0.3","repository_url":"https://github.com/cockroachdb/sqlalchemy-cockroachdb"},{"name":"trio","old_version":"0.29.0","new_version":"0.31.0","repository_url":"https://github.com/python-trio/trio"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"weasyprint","old_version":"65.1","new_version":"66.0","repository_url":"https://github.com/Kozea/WeasyPrint"},{"name":"xxhash","old_version":"3.5.0","new_version":"3.6.0","repository_url":"https://github.com/ifduyue/python-xxhash"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 27 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.3` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.0` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.57.0` | `4.60.1` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.3.2` | `6.0.2` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [packaging](https://github.com/pypa/packaging) | `24.2` | `25.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.7` | `4.4.0` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [selenium](https://github.com/SeleniumHQ/Selenium) | `4.31.0` | `4.36.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.43` |\n| [sqlalchemy-cockroachdb](https://github.com/cockroachdb/sqlalchemy-cockroachdb) | `2.0.2` | `2.0.3` |\n| [trio](https://github.com/python-trio/trio) | `0.29.0` | `0.31.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.5.0` |\n| [weasyprint](https://github.com/Kozea/WeasyPrint) | `65.1` | `66.0` |\n| [xxhash](https://github.com/ifduyue/python-xxhash) | `3.5.0` | `3.6.0` |\n\n\nUpdates `attrs` from 25.3.0 to 25.4.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/hynek/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `black` from 25.1.0 to 25.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.9.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for pre-python 3.7 \u003ccode\u003eawait/async\u003c/code\u003e as soft keywords/variable names\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash while formatting a long \u003ccode\u003edel\u003c/code\u003e statement containing tuples (\u003ca href=\"https://redirect.github.com/psf/black/issues/4628\"\u003e#4628\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash while formatting expressions using the walrus operator in complex \u003ccode\u003ewith\u003c/code\u003e\nstatements (\u003ca href=\"https://redirect.github.com/psf/black/issues/4630\"\u003e#4630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003e# fmt: skip\u003c/code\u003e followed by a comment at the end of file (\u003ca href=\"https://redirect.github.com/psf/black/issues/4635\"\u003e#4635\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when a tuple appears in the \u003ccode\u003eas\u003c/code\u003e clause of a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when tuple is used as a context manager inside a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4646\"\u003e#4646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when formatting a \u003ccode\u003e\\\u003c/code\u003e followed by a \u003ccode\u003e\\r\u003c/code\u003e followed by a comment (\u003ca href=\"https://redirect.github.com/psf/black/issues/4663\"\u003e#4663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on a \u003ccode\u003e\\\\r\\n\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4673\"\u003e#4673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on \u003ccode\u003eawait ...\u003c/code\u003e (where \u003ccode\u003e...\u003c/code\u003e is a literal \u003ccode\u003eEllipsis\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on parenthesized expression inside a type parameter bound (\u003ca href=\"https://redirect.github.com/psf/black/issues/4684\"\u003e#4684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when using line ranges excluding indented single line decorated items\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a bug where one-liner functions/conditionals marked with \u003ccode\u003e# fmt: skip\u003c/code\u003e would still\nbe formatted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4552\"\u003e#4552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003emultiline_string_handling\u003c/code\u003e with ternaries and dictionaries (\u003ca href=\"https://redirect.github.com/psf/black/issues/4657\"\u003e#4657\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003estring_processing\u003c/code\u003e would not split f-strings directly after\nexpressions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4680\"\u003e#4680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap the \u003ccode\u003ein\u003c/code\u003e clause of comprehensions across lines if necessary (\u003ca href=\"https://redirect.github.com/psf/black/issues/4699\"\u003e#4699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove parentheses around multiple exception types in \u003ccode\u003eexcept\u003c/code\u003e and \u003ccode\u003eexcept*\u003c/code\u003e without\n\u003ccode\u003eas\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4720\"\u003e#4720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e\\r\u003c/code\u003e style newlines to the potential newlines to normalize file newlines both from\nand to (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eParser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRewrite tokenizer to improve performance and compliance (\u003ca href=\"https://redirect.github.com/psf/black/issues/4536\"\u003e#4536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug where certain unusual expressions (e.g., lambdas) were not accepted in type\nparameter bounds and defaults. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4602\"\u003e#4602\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid using an extra process when running with only one worker (\u003ca href=\"https://redirect.github.com/psf/black/issues/4734\"\u003e#4734\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eIntegrations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix the version check in the vim file to reject Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4567\"\u003e#4567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnhance GitHub Action \u003ccode\u003epsf/black\u003c/code\u003e to read Black version from an additional section in\npyproject.toml: \u003ccode\u003e[project.dependency-groups]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4606\"\u003e#4606\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBuild gallery docker image with python3-slim and reduce image size (\u003ca href=\"https://redirect.github.com/psf/black/issues/4686\"\u003e#4686\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/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.9.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for pre-python 3.7 \u003ccode\u003eawait/async\u003c/code\u003e as soft keywords/variable names\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash while formatting a long \u003ccode\u003edel\u003c/code\u003e statement containing tuples (\u003ca href=\"https://redirect.github.com/psf/black/issues/4628\"\u003e#4628\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash while formatting expressions using the walrus operator in complex \u003ccode\u003ewith\u003c/code\u003e\nstatements (\u003ca href=\"https://redirect.github.com/psf/black/issues/4630\"\u003e#4630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003e# fmt: skip\u003c/code\u003e followed by a comment at the end of file (\u003ca href=\"https://redirect.github.com/psf/black/issues/4635\"\u003e#4635\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when a tuple appears in the \u003ccode\u003eas\u003c/code\u003e clause of a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when tuple is used as a context manager inside a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4646\"\u003e#4646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when formatting a \u003ccode\u003e\\\u003c/code\u003e followed by a \u003ccode\u003e\\r\u003c/code\u003e followed by a comment (\u003ca href=\"https://redirect.github.com/psf/black/issues/4663\"\u003e#4663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on a \u003ccode\u003e\\\\r\\n\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4673\"\u003e#4673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on \u003ccode\u003eawait ...\u003c/code\u003e (where \u003ccode\u003e...\u003c/code\u003e is a literal \u003ccode\u003eEllipsis\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on parenthesized expression inside a type parameter bound (\u003ca href=\"https://redirect.github.com/psf/black/issues/4684\"\u003e#4684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when using line ranges excluding indented single line decorated items\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a bug where one-liner functions/conditionals marked with \u003ccode\u003e# fmt: skip\u003c/code\u003e would still\nbe formatted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4552\"\u003e#4552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003emultiline_string_handling\u003c/code\u003e with ternaries and dictionaries (\u003ca href=\"https://redirect.github.com/psf/black/issues/4657\"\u003e#4657\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003estring_processing\u003c/code\u003e would not split f-strings directly after\nexpressions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4680\"\u003e#4680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap the \u003ccode\u003ein\u003c/code\u003e clause of comprehensions across lines if necessary (\u003ca href=\"https://redirect.github.com/psf/black/issues/4699\"\u003e#4699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove parentheses around multiple exception types in \u003ccode\u003eexcept\u003c/code\u003e and \u003ccode\u003eexcept*\u003c/code\u003e without\n\u003ccode\u003eas\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4720\"\u003e#4720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e\\r\u003c/code\u003e style newlines to the potential newlines to normalize file newlines both from\nand to (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eParser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRewrite tokenizer to improve performance and compliance (\u003ca href=\"https://redirect.github.com/psf/black/issues/4536\"\u003e#4536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug where certain unusual expressions (e.g., lambdas) were not accepted in type\nparameter bounds and defaults. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4602\"\u003e#4602\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid using an extra process when running with only one worker (\u003ca href=\"https://redirect.github.com/psf/black/issues/4734\"\u003e#4734\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eIntegrations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix the version check in the vim file to reject Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4567\"\u003e#4567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnhance GitHub Action \u003ccode\u003epsf/black\u003c/code\u003e to read Black version from an additional section in\npyproject.toml: \u003ccode\u003e[project.dependency-groups]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4606\"\u003e#4606\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/black/commit/af0ba72a73598c76189d6dd1b21d8532255d5942\"\u003e\u003ccode\u003eaf0ba72\u003c/code\u003e\u003c/a\u003e Prepare docs for release 25.9.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/ffc01a027580d99401abb3197e83d50dc4f4c746\"\u003e\u003ccode\u003effc01a0\u003c/code\u003e\u003c/a\u003e Fix schema generation error caused by new click version (\u003ca href=\"https://redirect.github.com/psf/black/issues/4750\"\u003e#4750\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/626b32fe2b5387656be6694da9a4b7a3148fb892\"\u003e\u003ccode\u003e626b32f\u003c/code\u003e\u003c/a\u003e Add normalizing for \u003ccode\u003e\\r\u003c/code\u003e style newlines (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/57a461258f324e33bca189b2eb49d7f7a944ffe7\"\u003e\u003ccode\u003e57a4612\u003c/code\u003e\u003c/a\u003e Fix mypy type issue (\u003ca href=\"https://redirect.github.com/psf/black/issues/4745\"\u003e#4745\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/4f6ad7cf8c3092e0fb4d82f54fe77ccde134468a\"\u003e\u003ccode\u003e4f6ad7c\u003c/code\u003e\u003c/a\u003e Wrap the \u003ccode\u003ein\u003c/code\u003e clause of comprehensions across lines if necessary (\u003ca href=\"https://redirect.github.com/psf/black/issues/4699\"\u003e#4699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/24f516961720c5578069dee30415b776359b7be5\"\u003e\u003ccode\u003e24f5169\u003c/code\u003e\u003c/a\u003e ci: Run diff-shades on unstable instead of preview (\u003ca href=\"https://redirect.github.com/psf/black/issues/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/4d55e6017993ee3f0927524e8bc19ead8de9e8ed\"\u003e\u003ccode\u003e4d55e60\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/0cf39efdbc3aaea455f95d31e5b42efb6bd61478\"\u003e\u003ccode\u003e0cf39ef\u003c/code\u003e\u003c/a\u003e Improve the performance of get_string_prefix (\u003ca href=\"https://redirect.github.com/psf/black/issues/4742\"\u003e#4742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/1f779dec013db37475fa56a5c9939a09eab7e7d6\"\u003e\u003ccode\u003e1f779de\u003c/code\u003e\u003c/a\u003e Fix line ranges decorator edge case (\u003ca href=\"https://redirect.github.com/psf/black/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/203fd6b5cdad975178b8174394a7f7fb13d14f02\"\u003e\u003ccode\u003e203fd6b\u003c/code\u003e\u003c/a\u003e Optimize Line string method (\u003ca href=\"https://redirect.github.com/psf/black/issues/4739\"\u003e#4739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/25.1.0...25.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.1.31 to 2025.10.5\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1\"\u003e\u003ccode\u003eddd90c6\u003c/code\u003e\u003c/a\u003e 2025.07.14 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52\"\u003e\u003ccode\u003ed905221\u003c/code\u003e\u003c/a\u003e 2025.07.09 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e767d5938eddddf804216cec93a55c85129c5f2d\"\u003e\u003ccode\u003ee767d59\u003c/code\u003e\u003c/a\u003e 2025.06.15 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2025.10.05\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\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.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\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/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\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/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\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/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\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.1 to 3.4.3\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.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\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.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\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/46f662da20edeced520c8819965a37eefbbc85de\"\u003e\u003ccode\u003e46f662d\u003c/code\u003e\u003c/a\u003e Release 3.4.3 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/638\"\u003e#638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1a059b26c155dd5fca408b0e0145c930633c4bf2\"\u003e\u003ccode\u003e1a059b2\u003c/code\u003e\u003c/a\u003e :wrench: skip building on freethreaded as we're not confident it is stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2275e3d3fea2bf6232661f1e9c21e7b81428e2a6\"\u003e\u003ccode\u003e2275e3d\u003c/code\u003e\u003c/a\u003e :pencil: final note in CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/c96acdfdb34b5b1deb6f70803167bae89b209832\"\u003e\u003ccode\u003ec96acdf\u003c/code\u003e\u003c/a\u003e :pencil: update release date on CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/43e5460518003df24ad1a3e7b5c0a34445395012\"\u003e\u003ccode\u003e43e5460\u003c/code\u003e\u003c/a\u003e :pencil: update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f277074e281a070cfa64fc91c46f8291043fc37c\"\u003e\u003ccode\u003ef277074\u003c/code\u003e\u003c/a\u003e :wrench: automatically lower confidence on small bytes str on non Unicode res...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/15ae2411072b5e026f2c9d6ec81b55f75af7dcf2\"\u003e\u003ccode\u003e15ae241\u003c/code\u003e\u003c/a\u003e :bug: automatically fallback on valid UTF-16 or UTF-32 even if the md says it...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/37397c1799a05454ab42fbbc94a7643cdb277924\"\u003e\u003ccode\u003e37397c1\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14 in nox test_mypyc session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/cb82537ecad195f48383b92e330351cea1fc6bc8\"\u003e\u003ccode\u003ecb82537\u003c/code\u003e\u003c/a\u003e :rewind: revert license due to compat python 3.7 issue setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/6a2efeb4c6e205964b61008b0c36ddf88c321543\"\u003e\u003ccode\u003e6a2efeb\u003c/code\u003e\u003c/a\u003e :art: fix linter errors\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.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.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.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.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-2-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-2-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/25\"\u003ehttps://github.com/pallets/click/milestone/25\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2952\"\u003e#2952\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2956\"\u003e#2956\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying functino \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2777\"\u003e#2777\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2990\"\u003e#2990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2911\"\u003e#2911\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3004\"\u003e#3004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2703\"\u003e#2703\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2846\"\u003e#2846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2971\"\u003e#2971\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2972\"\u003e#2972\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/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n:issue:\u003ccode\u003e2952\u003c/code\u003e :pr:\u003ccode\u003e2956\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying function \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. :issue:\u003ccode\u003e2777\u003c/code\u003e :pr:\u003ccode\u003e2990\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. Refs :issue:\u003ccode\u003e2911\u003c/code\u003e :pr:\u003ccode\u003e3004\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. :issue:\u003ccode\u003e2703\u003c/code\u003e :pr:\u003ccode\u003e2846\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. :issue:\u003ccode\u003e2971\u003c/code\u003e :pr:\u003ccode\u003e2972\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix a rare race in \u003ccode\u003eclick.testing.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\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/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `exceptiongroup` from 1.2.2 to 1.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/exceptiongroup/releases\"\u003eexceptiongroup's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003e**kwargs\u003c/code\u003e to function and method signatures as appropriate to match the signatures in the standard library\u003c/li\u003e\n\u003cli\u003eIn line with the stdlib typings in typeshed, updated \u003ccode\u003e(Base)ExceptionGroup\u003c/code\u003e generic types to define defaults for their generic arguments (defaulting to \u003ccode\u003eBaseExceptionGroup[BaseException]\u003c/code\u003e and \u003ccode\u003eExceptionGroup[Exception]\u003c/code\u003e) (PR by \u003ca href=\"https://github.com/mikenerone\"\u003e\u003ccode\u003e@​mikenerone\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eBaseExceptionGroup.__init__()\u003c/code\u003e to directly call \u003ccode\u003eBaseException.__init__()\u003c/code\u003e instead of the superclass \u003ccode\u003e__init__()\u003c/code\u003e in order to emulate the CPython behavior (broken or not) (PR by \u003ca href=\"https://github.com/cfbolz\"\u003e\u003ccode\u003e@​cfbolz\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the \u003ccode\u003eexceptions\u003c/code\u003e attribute to always return the same tuple of exceptions, created from the original exceptions sequence passed to \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e to match CPython behavior (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/143\"\u003e#143\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/agronholm/exceptiongroup/blob/main/CHANGES.rst\"\u003eexceptiongroup's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1.3.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003e**kwargs\u003c/code\u003e to function and method signatures as appropriate to match the\nsignatures in the standard library\u003c/li\u003e\n\u003cli\u003eIn line with the stdlib typings in typeshed, updated \u003ccode\u003e(Base)ExceptionGroup\u003c/code\u003e generic\ntypes to define defaults for their generic arguments (defaulting to\n\u003ccode\u003eBaseExceptionGroup[BaseException]\u003c/code\u003e and \u003ccode\u003eExceptionGroup[Exception]\u003c/code\u003e)\n(PR by \u003ca href=\"https://github.com/mikenerone\"\u003e\u003ccode\u003e@​mikenerone\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eBaseExceptionGroup.__init__()\u003c/code\u003e to directly call\n\u003ccode\u003eBaseException.__init__()\u003c/code\u003e instead of the superclass \u003ccode\u003e__init__()\u003c/code\u003e in order to\nemulate the CPython behavior (broken or not) (PR by \u003ca href=\"https://github.com/cfbolz\"\u003e\u003ccode\u003e@​cfbolz\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the \u003ccode\u003eexceptions\u003c/code\u003e attribute to always return the same tuple of exceptions,\ncreated from the original exceptions sequence passed to \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e to\nmatch CPython behavior\n(\u003ccode\u003e[#143](https://github.com/agronholm/exceptiongroup/issues/143) \u0026lt;https://github.com/agronholm/exceptiongroup/issues/143\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.2.2\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an \u003ccode\u003eassert\u003c/code\u003e in \u003ccode\u003eexceptiongroup._formatting\u003c/code\u003e that caused compatibility\nissues with Sentry (\u003ccode\u003e[#123](https://github.com/agronholm/exceptiongroup/issues/123) \u0026lt;https://github.com/agronholm/exceptiongroup/issues/123\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.2.1\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated the copying of \u003ccode\u003e__notes__\u003c/code\u003e to match CPython behavior (PR by CF Bolz-Tereick)\u003c/li\u003e\n\u003cli\u003eCorrected the type annotation of the exception handler callback to accept a\n\u003ccode\u003eBaseExceptionGroup\u003c/code\u003e instead of \u003ccode\u003eBaseException\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFixed type errors on Python \u0026lt; 3.10 and the type annotation of \u003ccode\u003esuppress()\u003c/code\u003e\n(PR by John Litborn)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.2.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded special monkeypatching if \u003ccode\u003eApport \u0026lt;https://github.com/canonical/apport\u0026gt;\u003c/code\u003e_ has\noverridden \u003ccode\u003esys.excepthook\u003c/code\u003e so it will format exception groups correctly\n(PR by John Litborn)\u003c/li\u003e\n\u003cli\u003eAdded a backport of \u003ccode\u003econtextlib.suppress()\u003c/code\u003e from Python 3.12.1 which also handles\nsuppressing exceptions inside exception groups\u003c/li\u003e\n\u003cli\u003eFixed bare \u003ccode\u003eraise\u003c/code\u003e in a handler reraising the original naked exception rather than\nan exception group which is what is raised when you do a \u003ccode\u003eraise\u003c/code\u003e in an \u003ccode\u003eexcept*\u003c/code\u003e\nhandler\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.1.3\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecatch()\u003c/code\u003e now raises a \u003ccode\u003eTypeError\u003c/code\u003e if passed an async exception handler instead of\njust giving a \u003ccode\u003eRuntimeWarning\u003c/code\u003e about the coroutine never being awaited. (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/66\"\u003e#66\u003c/a\u003e, PR by\nJohn Litborn)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/exceptiongroup/commit/77fba8a871408ff2c48f536e5e73b1918239ba5f\"\u003e\u003ccode\u003e77fba8a\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/5e153aa379ac53af79cc7f5e287f77929cb4d0dc\"\u003e\u003ccode\u003e5e153aa\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Migrated test dependencies to dependency groups\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/5000bfea208ad59e3a20e2fb91a513ad559711b1\"\u003e\u003ccode\u003e5000bfe\u003c/code\u003e\u003c/a\u003e Migrated tox configuration to native TOML\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/427220d67a52585e98575103b090b5fdaf87a899\"\u003e\u003ccode\u003e427220d\u003c/code\u003e\u003c/a\u003e Updated pytest options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/4ca264fa3605d52067c20b351a0d3b947fa1f363\"\u003e\u003ccode\u003e4ca264f\u003c/code\u003e\u003c/a\u003e Migrated test dependencies to dependency groups\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/163c3a8cb27f8a5325258b5a83e7cf8fc002c3b7\"\u003e\u003ccode\u003e163c3a8\u003c/code\u003e\u003c/a\u003e Marked test_exceptions_mutate_original_sequence as xfail on pypy3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/a1765740db2d55d1eb91d67a8fbbb355caf7881b\"\u003e\u003ccode\u003ea176574\u003c/code\u003e\u003c/a\u003e Always create the exceptions tuple at init and return it from the exceptions ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/550b79621cc35892413fa91903a1d6c7951d0449\"\u003e\u003ccode\u003e550b796\u003c/code\u003e\u003c/a\u003e Added BaseExceptionGroup.\u003cstrong\u003einit\u003c/strong\u003e, following CPython (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/2a84dfd5599bca0c653143f0f4252d38afac9867\"\u003e\u003ccode\u003e2a84dfd\u003c/code\u003e\u003c/a\u003e Added typevar defaults to (Base)ExceptionGroup (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/147\"\u003e#147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/fb9133b495fc82bc2907e8cfbdff6c6dc3087e2f\"\u003e\u003ccode\u003efb9133b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/exceptiongroup/compare/1.2.2...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask` from 3.1.0 to 3.1.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/2c1b30d0503cfb064f1cb252e6614a06915a362a\"\u003e\u003ccode\u003e2c1b30d\u003c/code\u003e\u003c/a\u003e release version 3.1.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/1292419ddfc6a14fc7f85b5ed7efcc2d215f1ad3\"\u003e\u003ccode\u003e1292419\u003c/code\u003e\u003c/a\u003e Update GitHub Actions workflow for artifact handling (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5795\"\u003e#5795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4dd52ca9c768c9b6d04180f0547d6f4b6e34f211\"\u003e\u003ccode\u003e4dd52ca\u003c/code\u003e\u003c/a\u003e Update GitHub Actions workflow for artifact handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/55c62556571ee46a94da174643b50ece06edead4\"\u003e\u003ccode\u003e55c6255\u003c/code\u003e\u003c/a\u003e update dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/d8259eb11900285af9b80b0fa47f841174c054e3\"\u003e\u003ccode\u003ed8259eb\u003c/code\u003e\u003c/a\u003e use Jinja name consistently\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/38b4c1e19b50494cfcdc9332899e09b7fed34979\"\u003e\u003ccode\u003e38b4c1e\u003c/code\u003e\u003c/a\u003e refactor stream_with_context for async views (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5799\"\u003e#5799\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/9822a0351574790cb66c652fcc396ad7aa2b09d8\"\u003e\u003ccode\u003e9822a03\u003c/code\u003e\u003c/a\u003e refactor stream_with_context for async views\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/49b7e7bc8fb69d605719991d1c0a99fcee689053\"\u003e\u003ccode\u003e49b7e7b\u003c/code\u003e\u003c/a\u003e security docs for TRUSTED_HOSTS (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5798\"\u003e#5798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/b228ca3d87745b746d904a2108429617a814ffda\"\u003e\u003ccode\u003eb228ca3\u003c/code\u003e\u003c/a\u003e security docs for TRUSTED_HOSTS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ff64079a516c269f171ababf3d92b86886a62ffd\"\u003e\u003ccode\u003eff64079\u003c/code\u003e\u003c/a\u003e update flask-talisman link\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.1.0...3.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fonttools` from 4.57.0 to 4.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fonttools/fonttools/releases\"\u003efonttools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.60.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ufoLib] Reverted accidental method name change in \u003ccode\u003eUFOReader.getKerningGroupConversionRenameMaps\u003c/code\u003e\nthat broke compatibility with downstream projects like defcon (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3948\"\u003e#3948\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3947\"\u003e#3947\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/robotools/defcon/issues/478\"\u003erobotools/defcon#478\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ufoLib] Added test coverage for \u003ccode\u003egetKerningGroupConversionRenameMaps\u003c/code\u003e method (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3950\"\u003e#3950\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Don't try to subset BASE table; pass it through by default instead (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3949\"\u003e#3949\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Remove empty BaseRecord entries in MarkBasePos lookups (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3897\"\u003e#3897\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3892\"\u003e#3892\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Add pruning for MarkLigPos and MarkMarkPos lookups (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3946\"\u003e#3946\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Remove duplicate features when subsetting (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3945\"\u003e#3945\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[Docs] Added documentation for the visitor module (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3944\"\u003e#3944\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.60.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e[pointPen] Allow \u003ccode\u003ereverseFlipped\u003c/code\u003e parameter of \u003ccode\u003eDecomposingPointPen\u003c/code\u003e to take a \u003ccode\u003eReverseFlipped\u003c/code\u003e enum value to control whether/how to reverse contour direction of flipped components, in addition to the existing True/False. This allows to set \u003ccode\u003eReverseFlipped.ON_CURVE_FIRST\u003c/code\u003e to ensure that the decomposed outline starts with an on-curve point before being reversed, for better consistency with other segment-oriented contour transformations. The change is backward compatible, and the default behavior hasn't changed (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3934\"\u003e#3934\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[filterPen] Added \u003ccode\u003eContourFilterPointPen\u003c/code\u003e, base pen for buffered contour operations, and \u003ccode\u003eOnCurveStartPointPen\u003c/code\u003e filter to ensure contours start with an on-curve point (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3934\"\u003e#3934\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[cu2qu] Fixed difference in cython vs pure-python complex division by real number (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3930\"\u003e#3930\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[varLib.avar] Refactored and added some new sub-modules and scripts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3926\"\u003e#3926\u003c/a\u003e).\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.build\u003c/code\u003e module to build avar (and a missing fvar) binaries into a possibly empty TTFont,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.unbuild\u003c/code\u003e module to print a .designspace snippet that would generate the same avar binary,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.map\u003c/code\u003e module to take TTFont and do the mapping, in user/normalized space,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.plan\u003c/code\u003e module moved from \u003ccode\u003evarLib.avarPlanner\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe bare \u003ccode\u003efonttools varLib.avar\u003c/code\u003e script is deprecated, in favour of \u003ccode\u003efonttools varLib.avar.build\u003c/code\u003e (or \u003ccode\u003eunbuild\u003c/code\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[interpolatable] Clarify \u003ccode\u003elinear_sum_assignment\u003c/code\u003e backend options and minimal dependency usage (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3927\"\u003e#3927\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[post] Speed up \u003ccode\u003ebuild_psNameMapping\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3923\"\u003e#3923\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[ufoLib] Added typing annotations to fontTools.ufoLib (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3875\"\u003e#3875\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.59.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[varLib] Clear \u003ccode\u003eUSE_MY_METRICS\u003c/code\u003e component flags when inconsistent across masters (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3912\"\u003e#3912\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Avoid negative advance width/height values when instatiating HVAR/VVAR, (unlikely in well-behaved fonts) (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3918\"\u003e#3918\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Fix shaping behaviour when pruning empty mark sets (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3915\"\u003e#3915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/harfbuzz/harfbuzz/issues/5499\"\u003eharfbuzz/harfbuzz#5499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cu2qu] Fixed \u003ccode\u003edot()\u003c/code\u003e product of perpendicular vectors not always returning exactly 0.0 in all Python implementations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3911\"\u003e#3911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Implemented fully-instantiating \u003ccode\u003eavar2\u003c/code\u003e fonts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3909\"\u003e#3909\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[feaLib] Allow float values in \u003ccode\u003eVariableScalar\u003c/code\u003e's axis locations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3906\"\u003e#3906\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3907\"\u003e#3907\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cu2qu] Handle special case in \u003ccode\u003ecalc_intersect\u003c/code\u003e for degenerate cubic curves where 3 to 4 control points are equal (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3904\"\u003e#3904\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.59.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[featureVars] Update OS/2.usMaxContext if possible after addFeatureVariationsRaw (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3894\"\u003e#3894\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[vhmtx] raise TTLibError('not enough data...') when hmtx/vmtx are truncated (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3843\"\u003e#3843\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3901\"\u003e#3901\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[feaLib] Combine duplicate features that have the same set of lookups regardless of the order in which those lookups are added to the feature (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3895\"\u003e#3895\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib] Deprecate \u003ccode\u003evarLib.mutator\u003c/code\u003e in favor of \u003ccode\u003evarLib.instancer\u003c/code\u003e. The latter provides equivalent full (static font) instancing in addition to partial VF instancing.\u003cbr /\u003e\nCLI users should replace \u003ccode\u003efonttools varLib.mutator\u003c/code\u003e with \u003ccode\u003efonttools varLib.instancer\u003c/code\u003e. API users should migrate to \u003ccode\u003efontTools.varLib.instancer.instantiateVariableFont\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/2680\"\u003e#2680\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.59.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved hard-dependency on pyfilesystem2 (\u003ccode\u003efs\u003c/code\u003e package) from \u003ccode\u003efonttools[ufo]\u003c/code\u003e extra. This is replaced by the \u003ccode\u003efontTools.misc.filesystem\u003c/code\u003e package, a stdlib-only, drop-in replacement for the subset of the pyfilesystem2's API used by \u003ccode\u003efontTools.ufoLib\u003c/code\u003e. The latter should continue to work with the upstream \u003ccode\u003efs\u003c/code\u003e (we even test with/without). However, clients who wish to continue using \u003ccode\u003efs\u003c/code\u003e can do so by depending on it directly instead of via the \u003ccode\u003efonttools[ufo]\u003c/code\u003e extra (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3885\"\u003e#3885\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3620\"\u003e#3620\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[xmlWriter] Replace illegal XML characters (e.g. control or non-characters) with \u0026quot;?\u0026quot; when dumping to ttx (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3868\"\u003e#3868\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/71\"\u003e#71\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.hvar] Fixed vertical metrics fields copy/pasta error (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3884\"\u003e#3884\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMicro optimizations in ttLib and sstruct modules (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3878\"\u003e#3878\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3879\"\u003e#3879\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[unicodedata] Add Garay script to RTL_SCRIPTS (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3882\"\u003e#3882\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[roundingPen] Remove unreliable kwarg usage. Argument names aren’t consistent among point pens’ \u003ccode\u003e.addComponent()\u003c/code\u003e implementations, in particular \u003ccode\u003ebaseGlyphName\u003c/code\u003e vs \u003ccode\u003eglyphName\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3880\"\u003e#3880\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.58.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/fonttools/fonttools/blob/main/NEWS.rst\"\u003efonttools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.60.1 (released 2025-09-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ufoLib] Reverted accidental method name change in \u003ccode\u003eUFOReader.getKerningGroupConversionRenameMaps\u003c/code\u003e\nthat broke compatibility with downstream projects like defcon (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3948\"\u003e#3948\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3947\"\u003e#3947\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/robotools/defcon/issues/478\"\u003erobotools/defcon#478\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ufoLib] Added test coverage for \u003ccode\u003egetKerningGroupConversionRenameMaps\u003c/code\u003e method (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3950\"\u003e#3950\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Don't try to subset BASE table; pass it through by default instead (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3949\"\u003e#3949\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Remove empty BaseRecord entries in MarkBasePos lookups (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3897\"\u003e#3897\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3892\"\u003e#3892\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Add pruning for MarkLigPos and MarkMarkPos lookups (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3946\"\u003e#3946\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Remove duplicate features when subsetting (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3945\"\u003e#3945\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[Docs] Added documentation for the visitor module (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3944\"\u003e#3944\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.60.0 (released 2025-09-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[pointPen] Allow \u003ccode\u003ereverseFlipped\u003c/code\u003e parameter of \u003ccode\u003eDecomposingPointPen\u003c/code\u003e to take a \u003ccode\u003eReverseFlipped\u003c/code\u003e\nenum value to control whether/how to reverse contour direction of flipped components, in addition to\nthe existing True/False. This allows to set \u003ccode\u003eReverseFlipped.ON_CURVE_FIRST\u003c/code\u003e to ensure that\nthe decomposed outline starts with an on-curve point before being reversed, for better consistency\nwith other segment-oriented contour transformations. The change is backward compatible, and the\ndefault behavior hasn't changed (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3934\"\u003e#3934\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[filterPen] Added \u003ccode\u003eContourFilterPointPen\u003c/code\u003e, base pen for buffered contour operations, and\n\u003ccode\u003eOnCurveStartPointPen\u003c/code\u003e filter to ensure contours start with an on-curve point (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3934\"\u003e#3934\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cu2qu] Fixed difference in cython vs pure-python complex division by real number (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3930\"\u003e#3930\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.avar] Refactored and added some new sub-modules and scripts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3926\"\u003e#3926\u003c/a\u003e).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.build\u003c/code\u003e module to build avar (and a missing fvar) binaries into a possibly empty TTFont,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.unbuild\u003c/code\u003e module to print a .designspace snippet that would generate the same avar binary,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.map\u003c/code\u003e module to take TTFont and do the mapping, in user/normalized space,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.plan\u003c/code\u003e module moved from \u003ccode\u003evarLib.avarPlanner\u003c/code\u003e.\nThe bare \u003ccode\u003efonttools varLib.avar\u003c/code\u003e script is deprecated, in favour of \u003ccode\u003efonttools varLib.avar.build\u003c/code\u003e (or \u003ccode\u003eunbuild\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e[interpolatable] Clarify \u003ccode\u003elinear_sum_assignment\u003c/code\u003e backend options and minimal dependency\nusage (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3927\"\u003e#3927\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[post] Speed up \u003ccode\u003ebuild_psNameMapping\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3923\"\u003e#3923\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ufoLib] Added typing annotations to fontTools.ufoLib (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3875\"\u003e#3875\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.59.2 (released 2025-08-27)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[varLib] Clear \u003ccode\u003eUSE_MY_METRICS\u003c/code\u003e component flags when inconsistent across masters (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3912\"\u003e#3912\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Avoid negative advance width/height values when instatiating HVAR/VVAR,\n(unlikely in well-behaved fonts) (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3918\"\u003e#3918\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Fix shaping behaviour when pruning empty mark sets (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3915\"\u003e#3915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/harfbuzz/harfbuzz/issues/5499\"\u003eharfbuzz/harfbuzz#5499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cu2qu] Fixed \u003ccode\u003edot()\u003c/code\u003e product of perpendicular vectors not always returning exactly 0.0\nin all Python implementations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3911\"\u003e#3911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Implemented fully-instantiating \u003ccode\u003eavar2\u003c/code\u003e fonts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3909\"\u003e#3909\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[feaLib] Allow float values in \u003ccode\u003eVariableScalar\u003c/code\u003e's axis locations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3906\"\u003e#3906\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3907\"\u003e#3907\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cu2qu] Handle special case in \u003ccode\u003ecalc_intersect\u003c/code\u003e for degenerate cubic curves where 3 to 4\ncontrol points are equal (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3904\"\u003e#3904\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e4.59.1 (released 2025-08-14)\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/fonttools/fonttools/commit/af032c141b452f47f35e93f1c5ca2004f133cdcf\"\u003e\u003ccode\u003eaf032c1\u003c/code\u003e\u003c/a\u003e Release 4.60.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/d47d26167836eefb08bc2051647f9a8d2195e00b\"\u003e\u003ccode\u003ed47d261\u003c/code\u003e\u003c/a\u003e Update NEWS.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/c734ff27cadfabadef83089df65091a5c6c50e9a\"\u003e\u003ccode\u003ec734ff2\u003c/...\n\n_Description has been truncated_","html_url":"https://github.com/Shy/party/pull/454","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shy%2Fparty/issues/454","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/454/packages"},{"uuid":"2882449075","node_id":"PR_kwDOIsJvGs6rzq6z","number":453,"state":"closed","title":"Bump the python-packages group across 1 directory with 26 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2025-10-06T17:07:27.000Z","author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-02T17:08:11.000Z","updated_at":"2025-10-06T17:07:27.000Z","time_to_close":345556,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":26,"packages":[{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.8.3","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.0","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"fonttools","old_version":"4.57.0","new_version":"4.60.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"lxml","old_version":"5.3.2","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"packaging","old_version":"24.2","new_version":"25.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.7","new_version":"4.4.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"selenium","old_version":"4.31.0","new_version":"4.36.0","repository_url":"https://github.com/SeleniumHQ/Selenium"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.43","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"sqlalchemy-cockroachdb","old_version":"2.0.2","new_version":"2.0.3","repository_url":"https://github.com/cockroachdb/sqlalchemy-cockroachdb"},{"name":"trio","old_version":"0.29.0","new_version":"0.31.0","repository_url":"https://github.com/python-trio/trio"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"weasyprint","old_version":"65.1","new_version":"66.0","repository_url":"https://github.com/Kozea/WeasyPrint"},{"name":"xxhash","old_version":"3.5.0","new_version":"3.6.0","repository_url":"https://github.com/ifduyue/python-xxhash"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 26 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.8.3` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.3` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.0` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.57.0` | `4.60.1` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.3.2` | `6.0.2` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [packaging](https://github.com/pypa/packaging) | `24.2` | `25.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.7` | `4.4.0` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [selenium](https://github.com/SeleniumHQ/Selenium) | `4.31.0` | `4.36.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.43` |\n| [sqlalchemy-cockroachdb](https://github.com/cockroachdb/sqlalchemy-cockroachdb) | `2.0.2` | `2.0.3` |\n| [trio](https://github.com/python-trio/trio) | `0.29.0` | `0.31.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.5.0` |\n| [weasyprint](https://github.com/Kozea/WeasyPrint) | `65.1` | `66.0` |\n| [xxhash](https://github.com/ifduyue/python-xxhash) | `3.5.0` | `3.6.0` |\n\n\nUpdates `black` from 25.1.0 to 25.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.9.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for pre-python 3.7 \u003ccode\u003eawait/async\u003c/code\u003e as soft keywords/variable names\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash while formatting a long \u003ccode\u003edel\u003c/code\u003e statement containing tuples (\u003ca href=\"https://redirect.github.com/psf/black/issues/4628\"\u003e#4628\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash while formatting expressions using the walrus operator in complex \u003ccode\u003ewith\u003c/code\u003e\nstatements (\u003ca href=\"https://redirect.github.com/psf/black/issues/4630\"\u003e#4630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003e# fmt: skip\u003c/code\u003e followed by a comment at the end of file (\u003ca href=\"https://redirect.github.com/psf/black/issues/4635\"\u003e#4635\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when a tuple appears in the \u003ccode\u003eas\u003c/code\u003e clause of a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when tuple is used as a context manager inside a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4646\"\u003e#4646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when formatting a \u003ccode\u003e\\\u003c/code\u003e followed by a \u003ccode\u003e\\r\u003c/code\u003e followed by a comment (\u003ca href=\"https://redirect.github.com/psf/black/issues/4663\"\u003e#4663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on a \u003ccode\u003e\\\\r\\n\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4673\"\u003e#4673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on \u003ccode\u003eawait ...\u003c/code\u003e (where \u003ccode\u003e...\u003c/code\u003e is a literal \u003ccode\u003eEllipsis\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on parenthesized expression inside a type parameter bound (\u003ca href=\"https://redirect.github.com/psf/black/issues/4684\"\u003e#4684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when using line ranges excluding indented single line decorated items\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a bug where one-liner functions/conditionals marked with \u003ccode\u003e# fmt: skip\u003c/code\u003e would still\nbe formatted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4552\"\u003e#4552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003emultiline_string_handling\u003c/code\u003e with ternaries and dictionaries (\u003ca href=\"https://redirect.github.com/psf/black/issues/4657\"\u003e#4657\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003estring_processing\u003c/code\u003e would not split f-strings directly after\nexpressions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4680\"\u003e#4680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap the \u003ccode\u003ein\u003c/code\u003e clause of comprehensions across lines if necessary (\u003ca href=\"https://redirect.github.com/psf/black/issues/4699\"\u003e#4699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove parentheses around multiple exception types in \u003ccode\u003eexcept\u003c/code\u003e and \u003ccode\u003eexcept*\u003c/code\u003e without\n\u003ccode\u003eas\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4720\"\u003e#4720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e\\r\u003c/code\u003e style newlines to the potential newlines to normalize file newlines both from\nand to (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eParser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRewrite tokenizer to improve performance and compliance (\u003ca href=\"https://redirect.github.com/psf/black/issues/4536\"\u003e#4536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug where certain unusual expressions (e.g., lambdas) were not accepted in type\nparameter bounds and defaults. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4602\"\u003e#4602\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid using an extra process when running with only one worker (\u003ca href=\"https://redirect.github.com/psf/black/issues/4734\"\u003e#4734\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eIntegrations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix the version check in the vim file to reject Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4567\"\u003e#4567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnhance GitHub Action \u003ccode\u003epsf/black\u003c/code\u003e to read Black version from an additional section in\npyproject.toml: \u003ccode\u003e[project.dependency-groups]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4606\"\u003e#4606\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBuild gallery docker image with python3-slim and reduce image size (\u003ca href=\"https://redirect.github.com/psf/black/issues/4686\"\u003e#4686\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/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.9.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for pre-python 3.7 \u003ccode\u003eawait/async\u003c/code\u003e as soft keywords/variable names\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash while formatting a long \u003ccode\u003edel\u003c/code\u003e statement containing tuples (\u003ca href=\"https://redirect.github.com/psf/black/issues/4628\"\u003e#4628\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash while formatting expressions using the walrus operator in complex \u003ccode\u003ewith\u003c/code\u003e\nstatements (\u003ca href=\"https://redirect.github.com/psf/black/issues/4630\"\u003e#4630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003e# fmt: skip\u003c/code\u003e followed by a comment at the end of file (\u003ca href=\"https://redirect.github.com/psf/black/issues/4635\"\u003e#4635\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when a tuple appears in the \u003ccode\u003eas\u003c/code\u003e clause of a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when tuple is used as a context manager inside a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4646\"\u003e#4646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when formatting a \u003ccode\u003e\\\u003c/code\u003e followed by a \u003ccode\u003e\\r\u003c/code\u003e followed by a comment (\u003ca href=\"https://redirect.github.com/psf/black/issues/4663\"\u003e#4663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on a \u003ccode\u003e\\\\r\\n\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4673\"\u003e#4673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on \u003ccode\u003eawait ...\u003c/code\u003e (where \u003ccode\u003e...\u003c/code\u003e is a literal \u003ccode\u003eEllipsis\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on parenthesized expression inside a type parameter bound (\u003ca href=\"https://redirect.github.com/psf/black/issues/4684\"\u003e#4684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when using line ranges excluding indented single line decorated items\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a bug where one-liner functions/conditionals marked with \u003ccode\u003e# fmt: skip\u003c/code\u003e would still\nbe formatted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4552\"\u003e#4552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003emultiline_string_handling\u003c/code\u003e with ternaries and dictionaries (\u003ca href=\"https://redirect.github.com/psf/black/issues/4657\"\u003e#4657\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003estring_processing\u003c/code\u003e would not split f-strings directly after\nexpressions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4680\"\u003e#4680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap the \u003ccode\u003ein\u003c/code\u003e clause of comprehensions across lines if necessary (\u003ca href=\"https://redirect.github.com/psf/black/issues/4699\"\u003e#4699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove parentheses around multiple exception types in \u003ccode\u003eexcept\u003c/code\u003e and \u003ccode\u003eexcept*\u003c/code\u003e without\n\u003ccode\u003eas\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4720\"\u003e#4720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e\\r\u003c/code\u003e style newlines to the potential newlines to normalize file newlines both from\nand to (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eParser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRewrite tokenizer to improve performance and compliance (\u003ca href=\"https://redirect.github.com/psf/black/issues/4536\"\u003e#4536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug where certain unusual expressions (e.g., lambdas) were not accepted in type\nparameter bounds and defaults. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4602\"\u003e#4602\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid using an extra process when running with only one worker (\u003ca href=\"https://redirect.github.com/psf/black/issues/4734\"\u003e#4734\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eIntegrations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix the version check in the vim file to reject Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4567\"\u003e#4567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnhance GitHub Action \u003ccode\u003epsf/black\u003c/code\u003e to read Black version from an additional section in\npyproject.toml: \u003ccode\u003e[project.dependency-groups]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4606\"\u003e#4606\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/black/commit/af0ba72a73598c76189d6dd1b21d8532255d5942\"\u003e\u003ccode\u003eaf0ba72\u003c/code\u003e\u003c/a\u003e Prepare docs for release 25.9.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/ffc01a027580d99401abb3197e83d50dc4f4c746\"\u003e\u003ccode\u003effc01a0\u003c/code\u003e\u003c/a\u003e Fix schema generation error caused by new click version (\u003ca href=\"https://redirect.github.com/psf/black/issues/4750\"\u003e#4750\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/626b32fe2b5387656be6694da9a4b7a3148fb892\"\u003e\u003ccode\u003e626b32f\u003c/code\u003e\u003c/a\u003e Add normalizing for \u003ccode\u003e\\r\u003c/code\u003e style newlines (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/57a461258f324e33bca189b2eb49d7f7a944ffe7\"\u003e\u003ccode\u003e57a4612\u003c/code\u003e\u003c/a\u003e Fix mypy type issue (\u003ca href=\"https://redirect.github.com/psf/black/issues/4745\"\u003e#4745\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/4f6ad7cf8c3092e0fb4d82f54fe77ccde134468a\"\u003e\u003ccode\u003e4f6ad7c\u003c/code\u003e\u003c/a\u003e Wrap the \u003ccode\u003ein\u003c/code\u003e clause of comprehensions across lines if necessary (\u003ca href=\"https://redirect.github.com/psf/black/issues/4699\"\u003e#4699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/24f516961720c5578069dee30415b776359b7be5\"\u003e\u003ccode\u003e24f5169\u003c/code\u003e\u003c/a\u003e ci: Run diff-shades on unstable instead of preview (\u003ca href=\"https://redirect.github.com/psf/black/issues/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/4d55e6017993ee3f0927524e8bc19ead8de9e8ed\"\u003e\u003ccode\u003e4d55e60\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/0cf39efdbc3aaea455f95d31e5b42efb6bd61478\"\u003e\u003ccode\u003e0cf39ef\u003c/code\u003e\u003c/a\u003e Improve the performance of get_string_prefix (\u003ca href=\"https://redirect.github.com/psf/black/issues/4742\"\u003e#4742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/1f779dec013db37475fa56a5c9939a09eab7e7d6\"\u003e\u003ccode\u003e1f779de\u003c/code\u003e\u003c/a\u003e Fix line ranges decorator edge case (\u003ca href=\"https://redirect.github.com/psf/black/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/203fd6b5cdad975178b8174394a7f7fb13d14f02\"\u003e\u003ccode\u003e203fd6b\u003c/code\u003e\u003c/a\u003e Optimize Line string method (\u003ca href=\"https://redirect.github.com/psf/black/issues/4739\"\u003e#4739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/25.1.0...25.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.1.31 to 2025.8.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1\"\u003e\u003ccode\u003eddd90c6\u003c/code\u003e\u003c/a\u003e 2025.07.14 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52\"\u003e\u003ccode\u003ed905221\u003c/code\u003e\u003c/a\u003e 2025.07.09 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e767d5938eddddf804216cec93a55c85129c5f2d\"\u003e\u003ccode\u003ee767d59\u003c/code\u003e\u003c/a\u003e 2025.06.15 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/3e7076557d66b598fcca462e422dc988f09a6802\"\u003e\u003ccode\u003e3e70765\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.5.0 to 5.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/9afd2ff407b8a0638988c952a6636b8dd623af7c\"\u003e\u003ccode\u003e9afd2ff\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.2.1 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7c816cbc9cf621b3ddc8cd7fa7eda3f36982620\"\u003e\u003ccode\u003ed7c816c\u003c/code\u003e\u003c/a\u003e remove code that's no longer required that 3.7 is our minimum (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/351\"\u003e#351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/189961379209973abd0dd6304297f03e2359e1b9\"\u003e\u003ccode\u003e1899613\u003c/code\u003e\u003c/a\u003e Declare setuptools as the build backend in pyproject.toml (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/350\"\u003e#350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c8741423d67e1025c0bdad5225ded05cf962f207\"\u003e\u003ccode\u003ec874142\u003c/code\u003e\u003c/a\u003e update CI for ubuntu 20.04 deprecation (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/348\"\u003e#348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/275c9eb55733a464589c15fb4566fddd4598e5b2\"\u003e\u003ccode\u003e275c9eb\u003c/code\u003e\u003c/a\u003e 2025.04.26 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2025.08.03\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\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.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\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/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\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/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\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/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\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.1 to 3.4.3\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.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\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.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\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/46f662da20edeced520c8819965a37eefbbc85de\"\u003e\u003ccode\u003e46f662d\u003c/code\u003e\u003c/a\u003e Release 3.4.3 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/638\"\u003e#638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1a059b26c155dd5fca408b0e0145c930633c4bf2\"\u003e\u003ccode\u003e1a059b2\u003c/code\u003e\u003c/a\u003e :wrench: skip building on freethreaded as we're not confident it is stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2275e3d3fea2bf6232661f1e9c21e7b81428e2a6\"\u003e\u003ccode\u003e2275e3d\u003c/code\u003e\u003c/a\u003e :pencil: final note in CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/c96acdfdb34b5b1deb6f70803167bae89b209832\"\u003e\u003ccode\u003ec96acdf\u003c/code\u003e\u003c/a\u003e :pencil: update release date on CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/43e5460518003df24ad1a3e7b5c0a34445395012\"\u003e\u003ccode\u003e43e5460\u003c/code\u003e\u003c/a\u003e :pencil: update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f277074e281a070cfa64fc91c46f8291043fc37c\"\u003e\u003ccode\u003ef277074\u003c/code\u003e\u003c/a\u003e :wrench: automatically lower confidence on small bytes str on non Unicode res...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/15ae2411072b5e026f2c9d6ec81b55f75af7dcf2\"\u003e\u003ccode\u003e15ae241\u003c/code\u003e\u003c/a\u003e :bug: automatically fallback on valid UTF-16 or UTF-32 even if the md says it...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/37397c1799a05454ab42fbbc94a7643cdb277924\"\u003e\u003ccode\u003e37397c1\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14 in nox test_mypyc session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/cb82537ecad195f48383b92e330351cea1fc6bc8\"\u003e\u003ccode\u003ecb82537\u003c/code\u003e\u003c/a\u003e :rewind: revert license due to compat python 3.7 issue setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/6a2efeb4c6e205964b61008b0c36ddf88c321543\"\u003e\u003ccode\u003e6a2efeb\u003c/code\u003e\u003c/a\u003e :art: fix linter errors\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.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.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.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.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-2-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-2-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/25\"\u003ehttps://github.com/pallets/click/milestone/25\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2952\"\u003e#2952\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2956\"\u003e#2956\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying functino \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2777\"\u003e#2777\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2990\"\u003e#2990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2911\"\u003e#2911\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3004\"\u003e#3004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2703\"\u003e#2703\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2846\"\u003e#2846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2971\"\u003e#2971\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2972\"\u003e#2972\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/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n:issue:\u003ccode\u003e2952\u003c/code\u003e :pr:\u003ccode\u003e2956\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying function \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. :issue:\u003ccode\u003e2777\u003c/code\u003e :pr:\u003ccode\u003e2990\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. Refs :issue:\u003ccode\u003e2911\u003c/code\u003e :pr:\u003ccode\u003e3004\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. :issue:\u003ccode\u003e2703\u003c/code\u003e :pr:\u003ccode\u003e2846\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. :issue:\u003ccode\u003e2971\u003c/code\u003e :pr:\u003ccode\u003e2972\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix a rare race in \u003ccode\u003eclick.testing.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\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/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `exceptiongroup` from 1.2.2 to 1.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/exceptiongroup/releases\"\u003eexceptiongroup's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003e**kwargs\u003c/code\u003e to function and method signatures as appropriate to match the signatures in the standard library\u003c/li\u003e\n\u003cli\u003eIn line with the stdlib typings in typeshed, updated \u003ccode\u003e(Base)ExceptionGroup\u003c/code\u003e generic types to define defaults for their generic arguments (defaulting to \u003ccode\u003eBaseExceptionGroup[BaseException]\u003c/code\u003e and \u003ccode\u003eExceptionGroup[Exception]\u003c/code\u003e) (PR by \u003ca href=\"https://github.com/mikenerone\"\u003e\u003ccode\u003e@​mikenerone\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eBaseExceptionGroup.__init__()\u003c/code\u003e to directly call \u003ccode\u003eBaseException.__init__()\u003c/code\u003e instead of the superclass \u003ccode\u003e__init__()\u003c/code\u003e in order to emulate the CPython behavior (broken or not) (PR by \u003ca href=\"https://github.com/cfbolz\"\u003e\u003ccode\u003e@​cfbolz\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the \u003ccode\u003eexceptions\u003c/code\u003e attribute to always return the same tuple of exceptions, created from the original exceptions sequence passed to \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e to match CPython behavior (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/143\"\u003e#143\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/agronholm/exceptiongroup/blob/main/CHANGES.rst\"\u003eexceptiongroup's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1.3.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003e**kwargs\u003c/code\u003e to function and method signatures as appropriate to match the\nsignatures in the standard library\u003c/li\u003e\n\u003cli\u003eIn line with the stdlib typings in typeshed, updated \u003ccode\u003e(Base)ExceptionGroup\u003c/code\u003e generic\ntypes to define defaults for their generic arguments (defaulting to\n\u003ccode\u003eBaseExceptionGroup[BaseException]\u003c/code\u003e and \u003ccode\u003eExceptionGroup[Exception]\u003c/code\u003e)\n(PR by \u003ca href=\"https://github.com/mikenerone\"\u003e\u003ccode\u003e@​mikenerone\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eBaseExceptionGroup.__init__()\u003c/code\u003e to directly call\n\u003ccode\u003eBaseException.__init__()\u003c/code\u003e instead of the superclass \u003ccode\u003e__init__()\u003c/code\u003e in order to\nemulate the CPython behavior (broken or not) (PR by \u003ca href=\"https://github.com/cfbolz\"\u003e\u003ccode\u003e@​cfbolz\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the \u003ccode\u003eexceptions\u003c/code\u003e attribute to always return the same tuple of exceptions,\ncreated from the original exceptions sequence passed to \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e to\nmatch CPython behavior\n(\u003ccode\u003e[#143](https://github.com/agronholm/exceptiongroup/issues/143) \u0026lt;https://github.com/agronholm/exceptiongroup/issues/143\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.2.2\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an \u003ccode\u003eassert\u003c/code\u003e in \u003ccode\u003eexceptiongroup._formatting\u003c/code\u003e that caused compatibility\nissues with Sentry (\u003ccode\u003e[#123](https://github.com/agronholm/exceptiongroup/issues/123) \u0026lt;https://github.com/agronholm/exceptiongroup/issues/123\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.2.1\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated the copying of \u003ccode\u003e__notes__\u003c/code\u003e to match CPython behavior (PR by CF Bolz-Tereick)\u003c/li\u003e\n\u003cli\u003eCorrected the type annotation of the exception handler callback to accept a\n\u003ccode\u003eBaseExceptionGroup\u003c/code\u003e instead of \u003ccode\u003eBaseException\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFixed type errors on Python \u0026lt; 3.10 and the type annotation of \u003ccode\u003esuppress()\u003c/code\u003e\n(PR by John Litborn)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.2.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded special monkeypatching if \u003ccode\u003eApport \u0026lt;https://github.com/canonical/apport\u0026gt;\u003c/code\u003e_ has\noverridden \u003ccode\u003esys.excepthook\u003c/code\u003e so it will format exception groups correctly\n(PR by John Litborn)\u003c/li\u003e\n\u003cli\u003eAdded a backport of \u003ccode\u003econtextlib.suppress()\u003c/code\u003e from Python 3.12.1 which also handles\nsuppressing exceptions inside exception groups\u003c/li\u003e\n\u003cli\u003eFixed bare \u003ccode\u003eraise\u003c/code\u003e in a handler reraising the original naked exception rather than\nan exception group which is what is raised when you do a \u003ccode\u003eraise\u003c/code\u003e in an \u003ccode\u003eexcept*\u003c/code\u003e\nhandler\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.1.3\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecatch()\u003c/code\u003e now raises a \u003ccode\u003eTypeError\u003c/code\u003e if passed an async exception handler instead of\njust giving a \u003ccode\u003eRuntimeWarning\u003c/code\u003e about the coroutine never being awaited. (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/66\"\u003e#66\u003c/a\u003e, PR by\nJohn Litborn)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/exceptiongroup/commit/77fba8a871408ff2c48f536e5e73b1918239ba5f\"\u003e\u003ccode\u003e77fba8a\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/5e153aa379ac53af79cc7f5e287f77929cb4d0dc\"\u003e\u003ccode\u003e5e153aa\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Migrated test dependencies to dependency groups\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/5000bfea208ad59e3a20e2fb91a513ad559711b1\"\u003e\u003ccode\u003e5000bfe\u003c/code\u003e\u003c/a\u003e Migrated tox configuration to native TOML\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/427220d67a52585e98575103b090b5fdaf87a899\"\u003e\u003ccode\u003e427220d\u003c/code\u003e\u003c/a\u003e Updated pytest options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/4ca264fa3605d52067c20b351a0d3b947fa1f363\"\u003e\u003ccode\u003e4ca264f\u003c/code\u003e\u003c/a\u003e Migrated test dependencies to dependency groups\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/163c3a8cb27f8a5325258b5a83e7cf8fc002c3b7\"\u003e\u003ccode\u003e163c3a8\u003c/code\u003e\u003c/a\u003e Marked test_exceptions_mutate_original_sequence as xfail on pypy3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/a1765740db2d55d1eb91d67a8fbbb355caf7881b\"\u003e\u003ccode\u003ea176574\u003c/code\u003e\u003c/a\u003e Always create the exceptions tuple at init and return it from the exceptions ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/550b79621cc35892413fa91903a1d6c7951d0449\"\u003e\u003ccode\u003e550b796\u003c/code\u003e\u003c/a\u003e Added BaseExceptionGroup.\u003cstrong\u003einit\u003c/strong\u003e, following CPython (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/2a84dfd5599bca0c653143f0f4252d38afac9867\"\u003e\u003ccode\u003e2a84dfd\u003c/code\u003e\u003c/a\u003e Added typevar defaults to (Base)ExceptionGroup (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/147\"\u003e#147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/fb9133b495fc82bc2907e8cfbdff6c6dc3087e2f\"\u003e\u003ccode\u003efb9133b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/exceptiongroup/compare/1.2.2...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask` from 3.1.0 to 3.1.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/2c1b30d0503cfb064f1cb252e6614a06915a362a\"\u003e\u003ccode\u003e2c1b30d\u003c/code\u003e\u003c/a\u003e release version 3.1.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/1292419ddfc6a14fc7f85b5ed7efcc2d215f1ad3\"\u003e\u003ccode\u003e1292419\u003c/code\u003e\u003c/a\u003e Update GitHub Actions workflow for artifact handling (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5795\"\u003e#5795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4dd52ca9c768c9b6d04180f0547d6f4b6e34f211\"\u003e\u003ccode\u003e4dd52ca\u003c/code\u003e\u003c/a\u003e Update GitHub Actions workflow for artifact handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/55c62556571ee46a94da174643b50ece06edead4\"\u003e\u003ccode\u003e55c6255\u003c/code\u003e\u003c/a\u003e update dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/d8259eb11900285af9b80b0fa47f841174c054e3\"\u003e\u003ccode\u003ed8259eb\u003c/code\u003e\u003c/a\u003e use Jinja name consistently\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/38b4c1e19b50494cfcdc9332899e09b7fed34979\"\u003e\u003ccode\u003e38b4c1e\u003c/code\u003e\u003c/a\u003e refactor stream_with_context for async views (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5799\"\u003e#5799\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/9822a0351574790cb66c652fcc396ad7aa2b09d8\"\u003e\u003ccode\u003e9822a03\u003c/code\u003e\u003c/a\u003e refactor stream_with_context for async views\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/49b7e7bc8fb69d605719991d1c0a99fcee689053\"\u003e\u003ccode\u003e49b7e7b\u003c/code\u003e\u003c/a\u003e security docs for TRUSTED_HOSTS (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5798\"\u003e#5798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/b228ca3d87745b746d904a2108429617a814ffda\"\u003e\u003ccode\u003eb228ca3\u003c/code\u003e\u003c/a\u003e security docs for TRUSTED_HOSTS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ff64079a516c269f171ababf3d92b86886a62ffd\"\u003e\u003ccode\u003eff64079\u003c/code\u003e\u003c/a\u003e update flask-talisman link\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.1.0...3.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fonttools` from 4.57.0 to 4.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fonttools/fonttools/releases\"\u003efonttools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.60.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ufoLib] Reverted accidental method name change in \u003ccode\u003eUFOReader.getKerningGroupConversionRenameMaps\u003c/code\u003e\nthat broke compatibility with downstream projects like defcon (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3948\"\u003e#3948\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3947\"\u003e#3947\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/robotools/defcon/issues/478\"\u003erobotools/defcon#478\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ufoLib] Added test coverage for \u003ccode\u003egetKerningGroupConversionRenameMaps\u003c/code\u003e method (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3950\"\u003e#3950\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Don't try to subset BASE table; pass it through by default instead (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3949\"\u003e#3949\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Remove empty BaseRecord entries in MarkBasePos lookups (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3897\"\u003e#3897\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3892\"\u003e#3892\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Add pruning for MarkLigPos and MarkMarkPos lookups (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3946\"\u003e#3946\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Remove duplicate features when subsetting (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3945\"\u003e#3945\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[Docs] Added documentation for the visitor module (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3944\"\u003e#3944\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.60.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e[pointPen] Allow \u003ccode\u003ereverseFlipped\u003c/code\u003e parameter of \u003ccode\u003eDecomposingPointPen\u003c/code\u003e to take a \u003ccode\u003eReverseFlipped\u003c/code\u003e enum value to control whether/how to reverse contour direction of flipped components, in addition to the existing True/False. This allows to set \u003ccode\u003eReverseFlipped.ON_CURVE_FIRST\u003c/code\u003e to ensure that the decomposed outline starts with an on-curve point before being reversed, for better consistency with other segment-oriented contour transformations. The change is backward compatible, and the default behavior hasn't changed (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3934\"\u003e#3934\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[filterPen] Added \u003ccode\u003eContourFilterPointPen\u003c/code\u003e, base pen for buffered contour operations, and \u003ccode\u003eOnCurveStartPointPen\u003c/code\u003e filter to ensure contours start with an on-curve point (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3934\"\u003e#3934\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[cu2qu] Fixed difference in cython vs pure-python complex division by real number (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3930\"\u003e#3930\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[varLib.avar] Refactored and added some new sub-modules and scripts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3926\"\u003e#3926\u003c/a\u003e).\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.build\u003c/code\u003e module to build avar (and a missing fvar) binaries into a possibly empty TTFont,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.unbuild\u003c/code\u003e module to print a .designspace snippet that would generate the same avar binary,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.map\u003c/code\u003e module to take TTFont and do the mapping, in user/normalized space,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.plan\u003c/code\u003e module moved from \u003ccode\u003evarLib.avarPlanner\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe bare \u003ccode\u003efonttools varLib.avar\u003c/code\u003e script is deprecated, in favour of \u003ccode\u003efonttools varLib.avar.build\u003c/code\u003e (or \u003ccode\u003eunbuild\u003c/code\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[interpolatable] Clarify \u003ccode\u003elinear_sum_assignment\u003c/code\u003e backend options and minimal dependency usage (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3927\"\u003e#3927\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[post] Speed up \u003ccode\u003ebuild_psNameMapping\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3923\"\u003e#3923\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[ufoLib] Added typing annotations to fontTools.ufoLib (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3875\"\u003e#3875\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.59.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[varLib] Clear \u003ccode\u003eUSE_MY_METRICS\u003c/code\u003e component flags when inconsistent across masters (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3912\"\u003e#3912\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Avoid negative advance width/height values when instatiating HVAR/VVAR, (unlikely in well-behaved fonts) (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3918\"\u003e#3918\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Fix shaping behaviour when pruning empty mark sets (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3915\"\u003e#3915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/harfbuzz/harfbuzz/issues/5499\"\u003eharfbuzz/harfbuzz#5499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cu2qu] Fixed \u003ccode\u003edot()\u003c/code\u003e product of perpendicular vectors not always returning exactly 0.0 in all Python implementations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3911\"\u003e#3911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Implemented fully-instantiating \u003ccode\u003eavar2\u003c/code\u003e fonts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3909\"\u003e#3909\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[feaLib] Allow float values in \u003ccode\u003eVariableScalar\u003c/code\u003e's axis locations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3906\"\u003e#3906\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3907\"\u003e#3907\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cu2qu] Handle special case in \u003ccode\u003ecalc_intersect\u003c/code\u003e for degenerate cubic curves where 3 to 4 control points are equal (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3904\"\u003e#3904\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.59.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[featureVars] Update OS/2.usMaxContext if possible after addFeatureVariationsRaw (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3894\"\u003e#3894\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[vhmtx] raise TTLibError('not enough data...') when hmtx/vmtx are truncated (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3843\"\u003e#3843\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3901\"\u003e#3901\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[feaLib] Combine duplicate features that have the same set of lookups regardless of the order in which those lookups are added to the feature (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3895\"\u003e#3895\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib] Deprecate \u003ccode\u003evarLib.mutator\u003c/code\u003e in favor of \u003ccode\u003evarLib.instancer\u003c/code\u003e. The latter provides equivalent full (static font) instancing in addition to partial VF instancing.\u003cbr /\u003e\nCLI users should replace \u003ccode\u003efonttools varLib.mutator\u003c/code\u003e with \u003ccode\u003efonttools varLib.instancer\u003c/code\u003e. API users should migrate to \u003ccode\u003efontTools.varLib.instancer.instantiateVariableFont\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/2680\"\u003e#2680\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.59.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved hard-dependency on pyfilesystem2 (\u003ccode\u003efs\u003c/code\u003e package) from \u003ccode\u003efonttools[ufo]\u003c/code\u003e extra. This is replaced by the \u003ccode\u003efontTools.misc.filesystem\u003c/code\u003e package, a stdlib-only, drop-in replacement for the subset of the pyfilesystem2's API used by \u003ccode\u003efontTools.ufoLib\u003c/code\u003e. The latter should continue to work with the upstream \u003ccode\u003efs\u003c/code\u003e (we even test with/without). However, clients who wish to continue using \u003ccode\u003efs\u003c/code\u003e can do so by depending on it directly instead of via the \u003ccode\u003efonttools[ufo]\u003c/code\u003e extra (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3885\"\u003e#3885\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3620\"\u003e#3620\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[xmlWriter] Replace illegal XML characters (e.g. control or non-characters) with \u0026quot;?\u0026quot; when dumping to ttx (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3868\"\u003e#3868\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/71\"\u003e#71\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.hvar] Fixed vertical metrics fields copy/pasta error (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3884\"\u003e#3884\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMicro optimizations in ttLib and sstruct modules (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3878\"\u003e#3878\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3879\"\u003e#3879\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[unicodedata] Add Garay script to RTL_SCRIPTS (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3882\"\u003e#3882\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[roundingPen] Remove unreliable kwarg usage. Argument names aren’t consistent among point pens’ \u003ccode\u003e.addComponent()\u003c/code\u003e implementations, in particular \u003ccode\u003ebaseGlyphName\u003c/code\u003e vs \u003ccode\u003eglyphName\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3880\"\u003e#3880\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.58.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/fonttools/fonttools/blob/main/NEWS.rst\"\u003efonttools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.60.1 (released 2025-09-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ufoLib] Reverted accidental method name change in \u003ccode\u003eUFOReader.getKerningGroupConversionRenameMaps\u003c/code\u003e\nthat broke compatibility with downstream projects like defcon (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3948\"\u003e#3948\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3947\"\u003e#3947\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/robotools/defcon/issues/478\"\u003erobotools/defcon#478\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ufoLib] Added test coverage for \u003ccode\u003egetKerningGroupConversionRenameMaps\u003c/code\u003e method (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3950\"\u003e#3950\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Don't try to subset BASE table; pass it through by default instead (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3949\"\u003e#3949\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Remove empty BaseRecord entries in MarkBasePos lookups (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3897\"\u003e#3897\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3892\"\u003e#3892\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Add pruning for MarkLigPos and MarkMarkPos lookups (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3946\"\u003e#3946\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Remove duplicate features when subsetting (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3945\"\u003e#3945\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[Docs] Added documentation for the visitor module (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3944\"\u003e#3944\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.60.0 (released 2025-09-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[pointPen] Allow \u003ccode\u003ereverseFlipped\u003c/code\u003e parameter of \u003ccode\u003eDecomposingPointPen\u003c/code\u003e to take a \u003ccode\u003eReverseFlipped\u003c/code\u003e\nenum value to control whether/how to reverse contour direction of flipped components, in addition to\nthe existing True/False. This allows to set \u003ccode\u003eReverseFlipped.ON_CURVE_FIRST\u003c/code\u003e to ensure that\nthe decomposed outline starts with an on-curve point before being reversed, for better consistency\nwith other segment-oriented contour transformations. The change is backward compatible, and the\ndefault behavior hasn't changed (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3934\"\u003e#3934\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[filterPen] Added \u003ccode\u003eContourFilterPointPen\u003c/code\u003e, base pen for buffered contour operations, and\n\u003ccode\u003eOnCurveStartPointPen\u003c/code\u003e filter to ensure contours start with an on-curve point (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3934\"\u003e#3934\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cu2qu] Fixed difference in cython vs pure-python complex division by real number (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3930\"\u003e#3930\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.avar] Refactored and added some new sub-modules and scripts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3926\"\u003e#3926\u003c/a\u003e).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.build\u003c/code\u003e module to build avar (and a missing fvar) binaries into a possibly empty TTFont,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.unbuild\u003c/code\u003e module to print a .designspace snippet that would generate the same avar binary,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.map\u003c/code\u003e module to take TTFont and do the mapping, in user/normalized space,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.plan\u003c/code\u003e module moved from \u003ccode\u003evarLib.avarPlanner\u003c/code\u003e.\nThe bare \u003ccode\u003efonttools varLib.avar\u003c/code\u003e script is deprecated, in favour of \u003ccode\u003efonttools varLib.avar.build\u003c/code\u003e (or \u003ccode\u003eunbuild\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e[interpolatable] Clarify \u003ccode\u003elinear_sum_assignment\u003c/code\u003e backend options and minimal dependency\nusage (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3927\"\u003e#3927\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[post] Speed up \u003ccode\u003ebuild_psNameMapping\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3923\"\u003e#3923\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ufoLib] Added typing annotations to fontTools.ufoLib (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3875\"\u003e#3875\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.59.2 (released 2025-08-27)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[varLib] Clear \u003ccode\u003eUSE_MY_METRICS\u003c/code\u003e component flags when inconsistent across masters (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3912\"\u003e#3912\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Avoid negative advance width/height values when instatiating HVAR/VVAR,\n(unlikely in well-behaved fonts) (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3918\"\u003e#3918\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Fix shaping behaviour when pruning empty mark sets (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3915\"\u003e#3915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/harfbuzz/harfbuzz/issues/5499\"\u003eharfbuzz/harfbuzz#5499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cu2qu] Fixed \u003ccode\u003edot()\u003c/code\u003e product of perpendicular vectors not always returning exactly 0.0\nin all Python implementations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3911\"\u003e#3911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Implemented fully-instantiating \u003ccode\u003eavar2\u003c/code\u003e fonts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3909\"\u003e#3909\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[feaLib] Allow float values in \u003ccode\u003eVariableScalar\u003c/code\u003e's axis locations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3906\"\u003e#3906\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3907\"\u003e#3907\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cu2qu] Handle special case in \u003ccode\u003ecalc_intersect\u003c/code\u003e for degenerate cubic curves where 3 to 4\ncontrol points are equal (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3904\"\u003e#3904\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e4.59.1 (released 2025-08-14)\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/fonttools/fonttools/commit/af032c141b452f47f35e93f1c5ca2004f133cdcf\"\u003e\u003ccode\u003eaf032c1\u003c/code\u003e\u003c/a\u003e Release 4.60.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/d47d26167836eefb08bc2051647f9a8d2195e00b\"\u003e\u003ccode\u003ed47d261\u003c/code\u003e\u003c/a\u003e Update NEWS.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/c734ff27cadfabadef83089df65091a5c6c50e9a\"\u003e\u003ccode\u003ec734ff2\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3950\"\u003e#3950\u003c/a\u003e from fonttools/test-ufolib-get-kerning-group-convers...\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/Shy/party/pull/453","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shy%2Fparty/issues/453","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/453/packages"},{"uuid":"2879137108","node_id":"PR_kwDOGwn7CM6rnCVU","number":444,"state":"open","title":"Bump trio from 0.30.0 to 0.31.0 in /automationTest","user":"dependabot[bot]","labels":["Dependabot"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-01T18:01:39.000Z","updated_at":"2025-10-01T18:02:08.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"trio","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/python-trio/trio"}],"path":"/automationTest","ecosystem":"pip"},"body":"Bumps [trio](https://github.com/python-trio/trio) 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/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003ebool(trio.Event)\u003c/code\u003e and have it raise a \u003ccode\u003eDeprecationWarning\u003c/code\u003e and tell users to use \u003ccode\u003etrio.Event.is_set\u003c/code\u003e instead. This is an alternative to \u003ccode\u003emypy --enable-error-code=truthy-bool\u003c/code\u003e for users who don't use type checking. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3322\"\u003epython-trio/trio#3322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen misnesting nurseries you now get a helpful \u003ccode\u003eRuntimeError\u003c/code\u003e instead of a catastrophic \u003ccode\u003eTrioInternalError\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3307\"\u003epython-trio/trio#3307\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/python-trio/trio/commit/94b7244505212061e21507c84725ef28be2705dd\"\u003e\u003ccode\u003e94b7244\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/439de50f5e3c9a718a2b4ed5790f27198de33e13\"\u003e\u003ccode\u003e439de50\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/cc148cfc0f23934aa603012b4f152c990e375f62\"\u003e\u003ccode\u003ecc148cf\u003c/code\u003e\u003c/a\u003e Suppress GeneratorExit from \u003ccode\u003e.aclose()\u003c/code\u003e for \u003ccode\u003eas_safe_channel\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3325\"\u003e#3325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/fc352b2b8ee84071273142375d8babb44333d115\"\u003e\u003ccode\u003efc352b2\u003c/code\u003e\u003c/a\u003e check for nursery misnesting on task exit (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/5bfba27b23f9a1f1bac86880b341bcfab54e43f2\"\u003e\u003ccode\u003e5bfba27\u003c/code\u003e\u003c/a\u003e Improve REPL KI (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3030\"\u003e#3030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/7cc7f6b9249f654627fb6b6737115a0900704c19\"\u003e\u003ccode\u003e7cc7f6b\u003c/code\u003e\u003c/a\u003e Define \u003ccode\u003etrio.Event.__bool__()\u003c/code\u003e to reduce bugs (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3322\"\u003e#3322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/8dd7d8ea38346b5effdfcc0669b356380eb670c9\"\u003e\u003ccode\u003e8dd7d8e\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3323\"\u003e#3323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/02c3794913a04a030f1f2ea76fb67b69abd90c3c\"\u003e\u003ccode\u003e02c3794\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003etyping_extensions\u003c/code\u003e requirement\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c3a0a762c343e5e4876725da18714bc79f38314f\"\u003e\u003ccode\u003ec3a0a76\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e,\u003c/code\u003e -\u0026gt; \u003ccode\u003e;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/e34ce248d6d1713a1986d13c93f2f49dda457228\"\u003e\u003ccode\u003ee34ce24\u003c/code\u003e\u003c/a\u003e Add message properly\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trio\u0026package-manager=pip\u0026previous-version=0.30.0\u0026new-version=0.31.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\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/Interstellarkai/edUFind/pull/444","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Interstellarkai%2FedUFind/issues/444","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/444/packages"},{"uuid":"2876361201","node_id":"PR_kwDOJ70Ows6rccnx","number":380,"state":"open","title":"Bump the python-packages group across 1 directory with 12 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-01T00:05:37.000Z","updated_at":"2025-10-01T00:05:38.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":12,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.11.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"redis","old_version":"6.2.0","new_version":"6.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"coverage","old_version":"7.10.1","new_version":"7.10.7","repository_url":"https://github.com/nedbat/coveragepy"},{"name":"hatch","old_version":"1.14.1","new_version":"1.14.2","repository_url":"https://github.com/pypa/hatch"},{"name":"mkdocs-material","old_version":"9.6.16","new_version":"9.6.21","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mypy","old_version":"1.17.1","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"pytest","old_version":"8.4.1","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"ruff","old_version":"0.12.7","new_version":"0.13.2","repository_url":"https://github.com/astral-sh/ruff"},{"name":"trio","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/python-trio/trio"},{"name":"types-boto3","old_version":"1.40.0","new_version":"1.40.42","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"types-pyyaml","old_version":"6.0.12.20250516","new_version":"6.0.12.20250915","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 12 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.11.0` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [redis](https://github.com/redis/redis-py) | `6.2.0` | `6.4.0` |\n| [coverage](https://github.com/nedbat/coveragepy) | `7.10.1` | `7.10.7` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.14.2` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.6.16` | `9.6.21` |\n| [mypy](https://github.com/python/mypy) | `1.17.1` | `1.18.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `8.4.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.7` | `0.13.2` |\n| [trio](https://github.com/python-trio/trio) | `0.30.0` | `0.31.0` |\n| [types-boto3](https://github.com/youtype/mypy_boto3_builder) | `1.40.0` | `1.40.42` |\n| [types-pyyaml](https://github.com/typeshed-internal/stub_uploader) | `6.0.12.20250516` | `6.0.12.20250915` |\n\n\nUpdates `anyio` from 4.9.0 to 4.11.0\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.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003eCancelScope.cancel()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by passing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to \u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e keyword argument (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/256\"\u003e#256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically handle all async tests (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all socket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/857\"\u003e#857\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously raised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise \u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but \u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this scenario. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing users to inject data directly into the buffer\u003c/li\u003e\n\u003cli\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\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/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.11.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to\n\u003ccode\u003eCancelScope.cancel()\u003c/code\u003e)\n(\u003ccode\u003e[#975](https://github.com/agronholm/anyio/issues/975) \u0026lt;https://github.com/agronholm/anyio/pull/975\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by\npassing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to\n\u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e\nkeyword argument (\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\n(\u003ccode\u003e[#971](https://github.com/agronholm/anyio/issues/971) \u0026lt;https://github.com/agronholm/anyio/pull/971\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio\n(\u003ccode\u003e[#974](https://github.com/agronholm/anyio/issues/974) \u0026lt;https://github.com/agronholm/anyio/pull/974\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e\n(\u003ccode\u003e[#964](https://github.com/agronholm/anyio/issues/964) \u0026lt;https://github.com/agronholm/anyio/pull/964\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all\nsocket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e\n(\u003ccode\u003e[#857](https://github.com/agronholm/anyio/issues/857) \u0026lt;https://github.com/agronholm/anyio/issues/857\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously\nraised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but\n\u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this\nscenario. (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a hierarchy of connectable stream classes for transparently connecting to\nvarious remote or local endpoints for exchanging bytes or objects\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and\n\u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context\nmanagers, particularly cancel scopes or task groups\n(\u003ccode\u003e[#905](https://github.com/agronholm/anyio/issues/905) \u0026lt;https://github.com/agronholm/anyio/pull/905\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and\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/08737af202f6610cdb8ba53fecaefd9c03269637\"\u003e\u003ccode\u003e08737af\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/8bb9fe04a1c0a4b6615c843d4a88bba38a386059\"\u003e\u003ccode\u003e8bb9fe0\u003c/code\u003e\u003c/a\u003e Fixed the inconsistent exception on sending to a closed TCP stream (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/963709358a05ced66986e928b593b4bd82422981\"\u003e\u003ccode\u003e9637093\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1bc6ee95a75007681ef9cb4eec0369838b390e9\"\u003e\u003ccode\u003ef1bc6ee\u003c/code\u003e\u003c/a\u003e Fixed changelog entry formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0b58964a26c68ca427b711bbe8536f61ed900133\"\u003e\u003ccode\u003e0b58964\u003c/code\u003e\u003c/a\u003e Mentioned the sub-interpreter support in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1ed112c65628d3cce312e7b6875b9f914d174a71\"\u003e\u003ccode\u003e1ed112c\u003c/code\u003e\u003c/a\u003e Ensure same port is used for IPv4/IPv6 when creating TCP listener with local_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aceeee09868642311a96626924f2f09c088a26c0\"\u003e\u003ccode\u003eaceeee0\u003c/code\u003e\u003c/a\u003e Re-enabled coverage reporting on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6b890dc869f54b6237caff52a74e86382c076ad2\"\u003e\u003ccode\u003e6b890dc\u003c/code\u003e\u003c/a\u003e Reworded a changelog entry and added PR links to others\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/944257d2d59e8057dd00cd5cc96d8f73028031dd\"\u003e\u003ccode\u003e944257d\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/087975f44599471a84bea2077731143a346c276a\"\u003e\u003ccode\u003e087975f\u003c/code\u003e\u003c/a\u003e Fixed a documentation style (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.11.0\"\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 `redis` from 6.2.0 to 6.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.4.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded epsilon property to the vsim command (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3723\"\u003e#3723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdating the latest Redis image for github pipeline testing (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3726\"\u003e#3726\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003c/h2\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/htemelski-redis\"\u003e\u003ccode\u003e@​htemelski-redis\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/elena-kolevska\"\u003e\u003ccode\u003e@​elena-kolevska\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.3.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for new BITOP operations: DIFF, DIFF1, ANDOR, ONE (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3690\"\u003e#3690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport new VAMANA vector index type (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3702\"\u003e#3702\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new stream commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3711\"\u003e#3711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd async Retry \u003cstrong\u003eeq\u003c/strong\u003e and \u003cstrong\u003ehash\u003c/strong\u003e \u0026amp; fix ExponentialWithJitterBackoff \u003cstrong\u003eeq\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3668\"\u003e#3668\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixing sentinel command execution to allow returning of actual responses when meaningful - behaviour controlled by 'return_responses' argument. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3191\"\u003e#3191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAnnotate deprecated_args decorator to preserve wrapped function type signature (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3701\"\u003e#3701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix ConnectionPool to raise MaxConnectionsError instead of Connection… (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3698\"\u003e#3698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd async Retry \u003cstrong\u003eeq\u003c/strong\u003e and \u003cstrong\u003ehash\u003c/strong\u003e \u0026amp; fix ExponentialWithJitterBackoff \u003cstrong\u003eeq\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3668\"\u003e#3668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSentinelManagedConnection searches for new master upon connection failure (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3560\"\u003e#3560\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3601\"\u003e#3601\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: avoid instantiating a connection on \u003cem\u003erepr\u003c/em\u003e_ (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3653\"\u003e#3653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing the return type hint for the transaction method in the standalone client. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3660\"\u003e#3660\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump rojopolis/spellcheck-github-actions from 0.48.0 to 0.49.0 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3665\"\u003e#3665\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropping integration tests with Redis 6.2 from pipeline actions. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3659\"\u003e#3659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove deprecated arg from call to ClusterPipeline (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3670\"\u003e#3670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTransactionStrategy reset: UNWATCH only when status is watching (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3671\"\u003e#3671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKeyT for set operations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3190\"\u003e#3190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoving references to old docs site '\u003ca href=\"https://redis-py.readthedocs.io/\"\u003ehttps://redis-py.readthedocs.io/\u003c/a\u003e' replaced by '\u003ca href=\"https://redis.readthedocs.io/\"\u003ehttps://redis.readthedocs.io/\u003c/a\u003e' (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3674\"\u003e#3674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoving unnecessary check for tests using AsyncMock (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3432\"\u003e#3432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdating test images for github pipeline execution (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3678\"\u003e#3678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdating the latest Redis image for pipeline testing (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3695\"\u003e#3695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump rojopolis/spellcheck-github-actions from 0.49.0 to 0.51.0 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3689\"\u003e#3689\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDOC-5225 testable probabilistic dt examples (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3691\"\u003e#3691\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate README.md (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3699\"\u003e#3699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConvert the value to int type only if it exists in CLIENT INFO (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3688\"\u003e#3688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix compatibility with latest pytest-asyncio version(1.1.0) (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3708\"\u003e#3708\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDOC-5424 time series examples (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3705\"\u003e#3705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding information in connection pool class doc string for available SSLConnection class, that can be used for SSL connections (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3710\"\u003e#3710\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/redis/redis-py/commit/fff669daaf43ae8092ea8ab7a2a3196a9b1b7e41\"\u003e\u003ccode\u003efff669d\u003c/code\u003e\u003c/a\u003e Updated package version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/43ce2a4025c020bd26e401371c16ca4920b470a5\"\u003e\u003ccode\u003e43ce2a4\u003c/code\u003e\u003c/a\u003e Updating the latest Redis image for github pipeline testing (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3726\"\u003e#3726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/64426cbdd43153b70b0e29d9d7b3ab2c63760359\"\u003e\u003ccode\u003e64426cb\u003c/code\u003e\u003c/a\u003e Added epsilon property to the vsim command (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3723\"\u003e#3723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/67ab74d705b4c1d00d600c500596af7a68abfd56\"\u003e\u003ccode\u003e67ab74d\u003c/code\u003e\u003c/a\u003e Add new stream commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3711\"\u003e#3711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/4c9512b1fe592dc9becebe9e5f053b0184b47f2c\"\u003e\u003ccode\u003e4c9512b\u003c/code\u003e\u003c/a\u003e Adding information in connection pool class doc string for available SSLConne...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/31399ed43588840bbbfdbbf0e8260d1b989b49ce\"\u003e\u003ccode\u003e31399ed\u003c/code\u003e\u003c/a\u003e SentinelManagedConnection searches for new master upon connection failure (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3\"\u003e#3\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/7291deb5eb8054a0dc915a8bf499a17498bc5968\"\u003e\u003ccode\u003e7291deb\u003c/code\u003e\u003c/a\u003e add async Retry \u003ccode\u003e__eq__\u003c/code\u003e and \u003ccode\u003e__hash__\u003c/code\u003e \u0026amp; fix ExponentialWithJitterBackof...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/4cf094fdd2c1f2ce335e671af3fad7ad0a48f309\"\u003e\u003ccode\u003e4cf094f\u003c/code\u003e\u003c/a\u003e Fix ConnectionPool to raise MaxConnectionsError instead of Connection… (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3698\"\u003e#3698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/a00141618572764821bbe6bd74e025536e061587\"\u003e\u003ccode\u003ea001416\u003c/code\u003e\u003c/a\u003e DOC-5424 time series examples (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3705\"\u003e#3705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/2b1ff5363715c8ba0043314a8b4bcbbc1ba741f5\"\u003e\u003ccode\u003e2b1ff53\u003c/code\u003e\u003c/a\u003e Fix compatibility with latest pytest-asyncio version(1.1.0) (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3708\"\u003e#3708\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v6.2.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 `coverage` from 7.10.1 to 7.10.7\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.10.7 — 2025-09-21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ePerformance: with branch coverage in large files, generating HTML, JSON, or\nLCOV reports could take far too long due to some quadratic behavior when\ncreating the function and class index pages.  This is now fixed, closing\n\u003ccode\u003eissue 2048\u003c/code\u003e_.  Thanks to Daniel Diniz for help diagnosing the problem.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMost warnings and a few errors now have links to a page in the docs\nexplaining the specific message.  Closes \u003ccode\u003eissue 1921\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1921: \u003ca href=\"https://redirect.github.com/nedbat/coveragepy/issues/1921\"\u003enedbat/coveragepy#1921\u003c/a\u003e\n.. _issue 2048: \u003ca href=\"https://redirect.github.com/nedbat/coveragepy/issues/2048\"\u003enedbat/coveragepy#2048\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-10-6:\u003c/p\u003e\n\u003ch2\u003eVersion 7.10.6 — 2025-08-29\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003esource\u003c/code\u003e directories were not properly communicated to subprocesses\nthat ran in different directories, as reported in \u003ccode\u003eissue 1499\u003c/code\u003e_.  This is now\nfixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerformance: \u003ccode\u003eAlex Gaynor continues fine-tuning \u0026lt;pull 2038_\u0026gt;\u003c/code\u003e_ the speed of\ncombination, especially with many contexts.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1499: \u003ca href=\"https://redirect.github.com/nedbat/coveragepy/issues/1499\"\u003enedbat/coveragepy#1499\u003c/a\u003e\n.. _pull 2038: \u003ca href=\"https://redirect.github.com/nedbat/coveragepy/pull/2038\"\u003enedbat/coveragepy#2038\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-10-5:\u003c/p\u003e\n\u003ch2\u003eVersion 7.10.5 — 2025-08-23\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBig speed improvements for \u003ccode\u003ecoverage combine\u003c/code\u003e: it's now about twice as\nfast! Huge thanks to Alex Gaynor for pull requests \u003ccode\u003e2032 \u0026lt;pull 2032_\u0026gt;\u003c/code\u003e\u003cem\u003e,\n\u003ccode\u003e2033 \u0026lt;pull 2033_\u0026gt;\u003c/code\u003e\u003c/em\u003e, and \u003ccode\u003e2034 \u0026lt;pull 2034_\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2032: \u003ca href=\"https://redirect.github.com/nedbat/coveragepy/pull/2032\"\u003enedbat/coveragepy#2032\u003c/a\u003e\n.. _pull 2033: \u003ca href=\"https://redirect.github.com/nedbat/coveragepy/pull/2033\"\u003enedbat/coveragepy#2033\u003c/a\u003e\n.. _pull 2034: \u003ca href=\"https://redirect.github.com/nedbat/coveragepy/pull/2034\"\u003enedbat/coveragepy#2034\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-10-4:\u003c/p\u003e\n\u003ch2\u003eVersion 7.10.4 — 2025-08-16\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/nedbat/coveragepy/commit/92a2af54e6bc948a9c536bd9b12bab70fb055904\"\u003e\u003ccode\u003e92a2af5\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.10.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nedbat/coveragepy/commit/952afdaca658d5e1acdd533c727448a0b218caf0\"\u003e\u003ccode\u003e952afda\u003c/code\u003e\u003c/a\u003e docs: prep for 7.10.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nedbat/coveragepy/commit/a301761e69da97b27662f395974d26f78fa8b2b5\"\u003e\u003ccode\u003ea301761\u003c/code\u003e\u003c/a\u003e build: riscv64 wheels (\u003ca href=\"https://redirect.github.com/nedbat/coveragepy/issues/2055\"\u003e#2055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nedbat/coveragepy/commit/5daff8d38786aa540ff9bec622eb3389f117f911\"\u003e\u003ccode\u003e5daff8d\u003c/code\u003e\u003c/a\u003e docs: now source is formatted with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nedbat/coveragepy/commit/04bbc3acfd914fdd99ffec9873bc03bdc7329357\"\u003e\u003ccode\u003e04bbc3a\u003c/code\u003e\u003c/a\u003e docs: discuss cog in the contributing docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nedbat/coveragepy/commit/c181b9315f59a81667da47cf3d760d0253872238\"\u003e\u003ccode\u003ec181b93\u003c/code\u003e\u003c/a\u003e build: use cog --check-fail-msg to instruct devs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nedbat/coveragepy/commit/33c4ba196f49e0ee86ab0ff473c0876c0bacd5fa\"\u003e\u003ccode\u003e33c4ba1\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nedbat/coveragepy/commit/0744b73b6b503ccf2cb75aba095c023672b921a8\"\u003e\u003ccode\u003e0744b73\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group across 1 directory with 2 updates (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nedbat/coveragepy/commit/0d5a112fc54c1d5a07f3f2ec451779808902c9af\"\u003e\u003ccode\u003e0d5a112\u003c/code\u003e\u003c/a\u003e perf: bulk narrowing to avoid N**2. \u003ca href=\"https://redirect.github.com/nedbat/coveragepy/issues/2048\"\u003e#2048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nedbat/coveragepy/commit/a868ed9269ca474748130f5c6360cd2aae66ffc8\"\u003e\u003ccode\u003ea868ed9\u003c/code\u003e\u003c/a\u003e docs: mention Python Discord on the index page\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nedbat/coveragepy/compare/7.10.1...7.10.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hatch` from 1.14.1 to 1.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/hatch/releases\"\u003ehatch's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHatch v1.14.2\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eFixed:\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix compatibility with recent versions of Click\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/d3448c233840d25df0a0a10571e034462cbd5d9e\"\u003e\u003ccode\u003ed3448c2\u003c/code\u003e\u003c/a\u003e Fix Windows build runner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/0170484878e73ba48515d802b44046dccb72f268\"\u003e\u003ccode\u003e0170484\u003c/code\u003e\u003c/a\u003e release Hatch v1.14.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/93e55cee4e294fb380e27739560693b4b4cd15e7\"\u003e\u003ccode\u003e93e55ce\u003c/code\u003e\u003c/a\u003e Fix: Set default of None for \u003ca href=\"https://github.com/click\"\u003e\u003ccode\u003e@​click\u003c/code\u003e\u003c/a\u003e.option(\u0026quot;--filter\u0026quot;, ...) (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2053\"\u003e#2053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pypa/hatch/compare/hatch-v1.14.1...hatch-v1.14.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-material` from 9.6.16 to 9.6.21\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/squidfunk/mkdocs-material/releases\"\u003emkdocs-material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003emkdocs-material-9.6.21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Serbian translations\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8458\"\u003e#8458\u003c/a\u003e: Temporary pin of click dependency\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.6.20\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8446\"\u003e#8446\u003c/a\u003e: Deprecation warning as of Python 3.14 in Emoji extension\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8440\"\u003e#8440\u003c/a\u003e: \u003ccode\u003e\u0026amp;\u003c/code\u003e character not escaped in search highlighting\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8439\"\u003e#8439\u003c/a\u003e: FontAwesome icons color not set in social cards (regression)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.6.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14\u003c/li\u003e\n\u003cli\u003eUpdated Bahasa Malaysia translations\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.6.18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Azerbaijani translations\u003c/li\u003e\n\u003cli\u003eFixed last compat issues with \u003ca href=\"https://github.com/mitsuhiko/minijinja\"\u003eminijinja\u003c/a\u003e, now 100% compatible\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.6.17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8396\"\u003e#8396\u003c/a\u003e: Videos do not autoplay when inside a content tab\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8394\"\u003e#8394\u003c/a\u003e: Stroke width not effective in Mermaid.js diagrams\u003c/li\u003e\n\u003cli\u003eFixed disappearing version selector when hiding page title\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/squidfunk/mkdocs-material/blob/master/CHANGELOG\"\u003emkdocs-material's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003emkdocs-material-9.6.21 (2025-09-30)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Serbian translations\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8458\"\u003e#8458\u003c/a\u003e: Temporary pin of click dependency\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.6.20 (2025-09-15)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8446\"\u003e#8446\u003c/a\u003e: Deprecation warning as of Python 3.14 in Emoji extension\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8440\"\u003e#8440\u003c/a\u003e: \u003ccode\u003e\u0026amp;\u003c/code\u003e character not escaped in search highlighting\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8439\"\u003e#8439\u003c/a\u003e: FontAwesome icons color not set in social cards (regression)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.6.19 (2025-09-07)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14\u003c/li\u003e\n\u003cli\u003eUpdated Bahasa Malaysia translations\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.6.18 (2025-08-22)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Azerbaijani translations\u003c/li\u003e\n\u003cli\u003eFixed last compat issues with [minijinja], now 100% compatible\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.6.17 (2025-08-15)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8396\"\u003e#8396\u003c/a\u003e: Videos do not autoplay when inside a content tab\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8394\"\u003e#8394\u003c/a\u003e: Stroke width not effective in Mermaid.js diagrams\u003c/li\u003e\n\u003cli\u003eFixed disappearing version selector when hiding page title\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.6.16 (2025-07-26)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8349\"\u003e#8349\u003c/a\u003e: Info plugin doesn't correctly detect virtualenv in some cases\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8334\"\u003e#8334\u003c/a\u003e: Find-in-page detects matches in hidden search result list\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.6.15 (2025-07-01)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Mongolian translations\u003c/li\u003e\n\u003cli\u003eImproved semantic markup of \u0026quot;edit this page\u0026quot; button\u003c/li\u003e\n\u003cli\u003eImproved info plugin virtual environment resolution\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8291\"\u003e#8291\u003c/a\u003e: Large font size setting throws of breakpoints in JavaScript\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.6.14 (2025-05-13)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8215\"\u003e#8215\u003c/a\u003e: Social plugin crashes when CairoSVG is updated to 2.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.6.13 (2025-05-10)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8204\"\u003e#8204\u003c/a\u003e: Annotations showing list markers in print view\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8153\"\u003e#8153\u003c/a\u003e: Improve style of cardinality symbols in Mermaid.js ER diagrams\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.6.12 (2025-04-17)\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/squidfunk/mkdocs-material/commit/f7cacc0089c01e6c075512da06de949e769dad0e\"\u003e\u003ccode\u003ef7cacc0\u003c/code\u003e\u003c/a\u003e Prepare 9.6.21 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/6f715fbe063869d6fda139c0b9f06e371517d106\"\u003e\u003ccode\u003e6f715fb\u003c/code\u003e\u003c/a\u003e Unpinned click\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/97e275c953e5b8255ca24ca166ddd802e23d84b1\"\u003e\u003ccode\u003e97e275c\u003c/code\u003e\u003c/a\u003e Updated Serbian languages (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8445\"\u003e#8445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/f0b0b5931a386b670c19d3e3b78ecd41da144341\"\u003e\u003ccode\u003ef0b0b59\u003c/code\u003e\u003c/a\u003e Prepare 9.6.20 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/900981b6f82c51fdf4e78f1e5f9e48592bbb85c2\"\u003e\u003ccode\u003e900981b\u003c/code\u003e\u003c/a\u003e Fixed deprecation warning as of Python 3.14 in Emoji extension\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/ed0026322f5ff51df2e9c9f8489ba2e3ebc06fa5\"\u003e\u003ccode\u003eed00263\u003c/code\u003e\u003c/a\u003e Documentation (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8443\"\u003e#8443\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/a4f42bbfcdc816f7e69b2ab0c7ed87d58862939e\"\u003e\u003ccode\u003ea4f42bb\u003c/code\u003e\u003c/a\u003e Updated Premium sponsors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/63d7e746be929737d7bbbca32d66f5d083ea253a\"\u003e\u003ccode\u003e63d7e74\u003c/code\u003e\u003c/a\u003e Fixed FontAwesome icons having fill attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/ee678455e93a2a356d58bc7a1c57f1e3e171a8c4\"\u003e\u003ccode\u003eee67845\u003c/code\u003e\u003c/a\u003e Fixed \u0026amp; not escaped in search highlighting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/2fe55eecfa0abe6004ea0adb8b5fbc527d788d5f\"\u003e\u003ccode\u003e2fe55ee\u003c/code\u003e\u003c/a\u003e Prepare 9.6.19 release\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/squidfunk/mkdocs-material/compare/9.6.16...9.6.21\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.17.1 to 1.18.2\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 1.18.2\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash on recursive alias (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/19845\"\u003e19845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd additional guidance for stubtest errors when runtime is \u003ccode\u003eobject.__init__\u003c/code\u003e (Stephen Morton, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/19733\"\u003e19733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix handling of None values in f-string expressions in mypyc (BobTheBuidler, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/19846\"\u003e19846\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\u003eAli Hamdan\u003c/li\u003e\n\u003cli\u003eAnthony Sottile\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003eBrian Schubert\u003c/li\u003e\n\u003cli\u003eChainfire\u003c/li\u003e\n\u003cli\u003eCharlie Denton\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eCoolCat467\u003c/li\u003e\n\u003cli\u003eDaniel Hnyk\u003c/li\u003e\n\u003cli\u003eEmily\u003c/li\u003e\n\u003cli\u003eEmma Smith\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJahongir Qurbonov\u003c/li\u003e\n\u003cli\u003eJelle Zijlstra\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eOmer Hadari\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003ePrinceNaroliya\u003c/li\u003e\n\u003cli\u003eRandolf Scholz\u003c/li\u003e\n\u003cli\u003eRobsdedude\u003c/li\u003e\n\u003cli\u003eSaul Shanabrook\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eStanislav Terliakov\u003c/li\u003e\n\u003cli\u003eStephen Morton\u003c/li\u003e\n\u003cli\u003ewyattscarpenter\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 1.17\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.17 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 and bug fixes.\nYou 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\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/df05f05555ee62dbdb9960c64cad186172e92be1\"\u003e\u003ccode\u003edf05f05\u003c/code\u003e\u003c/a\u003e remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/01a7a1285d03cb7a330359b22cb462aacb5f9720\"\u003e\u003ccode\u003e01a7a12\u003c/code\u003e\u003c/a\u003e Update changelog for 1.18.2 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/19873\"\u003e#19873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/ca5abf09f3bfc543ac9c18a364696bc5da20bc03\"\u003e\u003ccode\u003eca5abf0\u003c/code\u003e\u003c/a\u003e Typeshed cherry-pick: Make type of \u003ccode\u003eunitest.mock.Any\u003c/code\u003e a subclass of \u003ccode\u003eAny\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python/mypy/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/9d794b57d9c5b03d61caa3286756c05e0ae3021b\"\u003e\u003ccode\u003e9d794b5\u003c/code\u003e\u003c/a\u003e [mypyc] fix: inappropriate \u003ccode\u003eNone\u003c/code\u003es in f-strings (\u003ca href=\"https://redirect.github.com/python/mypy/issues/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2c0510c84868b6bb42ef0f305b701e530a85c25f\"\u003e\u003ccode\u003e2c0510c\u003c/code\u003e\u003c/a\u003e stubtest: additional guidance on errors when runtime is object.\u003cstrong\u003einit\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/python/mypy/issues/19733\"\u003e#19733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2f3f03c3e39e68dbfa3544c01a34f99803b3e1c2\"\u003e\u003ccode\u003e2f3f03c\u003c/code\u003e\u003c/a\u003e Bump version to 1.18.2+dev for point release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/76698412bc1f3ca99000d52649acd5a0e06aa71d\"\u003e\u003ccode\u003e7669841\u003c/code\u003e\u003c/a\u003e Fix crash on recursive alias in indirection.py (\u003ca href=\"https://redirect.github.com/python/mypy/issues/19845\"\u003e#19845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/03fbaa941bccc3a9f8aea796d586603b67119bf2\"\u003e\u003ccode\u003e03fbaa9\u003c/code\u003e\u003c/a\u003e bump version to 1.18.1 due to wheels failure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b44a1fbf0cf9fd90fd29d6bcd9f64c55dd2fd4c8\"\u003e\u003ccode\u003eb44a1fb\u003c/code\u003e\u003c/a\u003e removed +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7197a99d1aebb1b7a584f82a53c44efb7dddf136\"\u003e\u003ccode\u003e7197a99\u003c/code\u003e\u003c/a\u003e Removed Unreleased in the Changelog for Release 1.18 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/19827\"\u003e#19827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.17.1...v1.18.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 8.4.1 to 8.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.4.2\u003c/h2\u003e\n\u003ch1\u003epytest 8.4.2 (2025-09-03)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13478\"\u003e#13478\u003c/a\u003e: Fixed a crash when using \u003ccode\u003econsole_output_style\u003c/code\u003e{.interpreted-text role=\u0026quot;confval\u0026quot;} with \u003ccode\u003etimes\u003c/code\u003e and a module is skipped.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13530\"\u003e#13530\u003c/a\u003e: Fixed a crash when using \u003ccode\u003epytest.approx\u003c/code\u003e{.interpreted-text role=\u0026quot;func\u0026quot;} and \u003ccode\u003edecimal.Decimal\u003c/code\u003e{.interpreted-text role=\u0026quot;class\u0026quot;} instances with the \u003ccode\u003edecimal.FloatOperation\u003c/code\u003e{.interpreted-text role=\u0026quot;class\u0026quot;} trap set.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13549\"\u003e#13549\u003c/a\u003e: No longer evaluate type annotations in Python \u003ccode\u003e3.14\u003c/code\u003e when inspecting function signatures.\u003c/p\u003e\n\u003cp\u003eThis prevents crashes during module collection when modules do not explicitly use \u003ccode\u003efrom __future__ import annotations\u003c/code\u003e and import types for annotations within a \u003ccode\u003eif TYPE_CHECKING:\u003c/code\u003e block.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13559\"\u003e#13559\u003c/a\u003e: Added missing [int]{.title-ref} and [float]{.title-ref} variants to the [Literal]{.title-ref} type annotation of the [type]{.title-ref} parameter in \u003ccode\u003epytest.Parser.addini\u003c/code\u003e{.interpreted-text role=\u0026quot;meth\u0026quot;}.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13563\"\u003e#13563\u003c/a\u003e: \u003ccode\u003epytest.approx\u003c/code\u003e{.interpreted-text role=\u0026quot;func\u0026quot;} now only imports \u003ccode\u003enumpy\u003c/code\u003e if NumPy is already in \u003ccode\u003esys.modules\u003c/code\u003e. This fixes unconditional import behavior introduced in [8.4.0]{.title-ref}.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13577\"\u003e#13577\u003c/a\u003e: Clarify that \u003ccode\u003epytest_generate_tests\u003c/code\u003e is discovered in test modules/classes; other hooks must be in \u003ccode\u003econftest.py\u003c/code\u003e or plugins.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13480\"\u003e#13480\u003c/a\u003e: Self-testing: fixed a few test failures when run with \u003ccode\u003e-Wdefault\u003c/code\u003e or a similar override.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13547\"\u003e#13547\u003c/a\u003e: Self-testing: corrected expected message for \u003ccode\u003etest_doctest_unexpected_exception\u003c/code\u003e in Python \u003ccode\u003e3.14\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13684\"\u003e#13684\u003c/a\u003e: Make pytest's own testsuite insensitive to the presence of the \u003ccode\u003eCI\u003c/code\u003e environment variable -- by \u003ccode\u003eogrisel\u003c/code\u003e{.interpreted-text role=\u0026quot;user\u0026quot;}.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bfae4224fd554d3d7f2c277a4cc092b6ec6af3ae\"\u003e\u003ccode\u003ebfae422\u003c/code\u003e\u003c/a\u003e Prepare release version 8.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/89905381a163be30ae87d62e5f750e902d750c5f\"\u003e\u003ccode\u003e8990538\u003c/code\u003e\u003c/a\u003e Fix passenv CI in tox ini and make tests insensitive to the presence of the C...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ca676bfe005aebcb12f4146d1b0f1d2772e2cd5d\"\u003e\u003ccode\u003eca676bf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13687\"\u003e#13687\u003c/a\u003e from pytest-dev/patchback/backports/8.4.x/e63f6e51c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/975a60a63ce385a44655596e254c1899feaa53e4\"\u003e\u003ccode\u003e975a60a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13686\"\u003e#13686\u003c/a\u003e from pytest-dev/patchback/backports/8.4.x/12bde8af6...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7723ce84b87ab08f86ddafcb342acc28ba5ec99d\"\u003e\u003ccode\u003e7723ce8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13683\"\u003e#13683\u003c/a\u003e from even-even/fix_Exeption_to_Exception_in_errorMe...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b7f05680d1301e0969b30bcb3c4b27433c9ee2b7\"\u003e\u003ccode\u003eb7f0568\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13685\"\u003e#13685\u003c/a\u003e from CoretexShadow/fix/docs-pytest-generate-tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/2c94c4a6948ba53440818389298157fa5d5f94cd\"\u003e\u003ccode\u003e2c94c4a\u003c/code\u003e\u003c/a\u003e add missing colon (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13640\"\u003e#13640\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13641\"\u003e#13641\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c3d7684bc01c8c48d05145a30c5211ca8656c68c\"\u003e\u003ccode\u003ec3d7684\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13606\"\u003e#13606\u003c/a\u003e from pytest-dev/patchback/backports/8.4.x/5f9938563...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/dc6e3be2ddc75a149b6d102d9b7c82ee47a00cfa\"\u003e\u003ccode\u003edc6e3be\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13605\"\u003e#13605\u003c/a\u003e from The-Compiler/training-update-2025-07\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f87289c36c8dbe7740e3020f5546b6f8b0861ff0\"\u003e\u003ccode\u003ef87289c\u003c/code\u003e\u003c/a\u003e Fix crash with \u003ccode\u003etimes\u003c/code\u003e output style and skipped module (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13573\"\u003e#13573\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13579\"\u003e#13579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.4.1...8.4.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.12.7 to 0.13.2\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.13.2\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2025-09-25.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Implement \u003ccode\u003eblocking-path-method\u003c/code\u003e (\u003ccode\u003eASYNC240\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20264\"\u003e#20264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Implement \u003ccode\u003emap-without-explicit-strict\u003c/code\u003e (\u003ccode\u003eB912\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20429\"\u003e#20429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bultins\u003c/code\u003e] Detect class-scope builtin shadowing in decorators, default args, and attribute initializers (\u003ccode\u003eA003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20178\"\u003e#20178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Implement \u003ccode\u003elogging-eager-conversion\u003c/code\u003e (\u003ccode\u003eRUF065\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19942\"\u003e#19942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003e.pyw\u003c/code\u003e files by default when linting and formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20458\"\u003e#20458\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeduplicate input paths (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20105\"\u003e#20105\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Preserve trailing commas for single-element lists (\u003ccode\u003eC409\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19571\"\u003e#19571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Avoid syntax error from conflict with \u003ccode\u003ePIE790\u003c/code\u003e (\u003ccode\u003ePYI021\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20010\"\u003e#20010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Correct fix for positive \u003ccode\u003emaxsplit\u003c/code\u003e without separator (\u003ccode\u003eSIM905\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20056\"\u003e#20056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix \u003ccode\u003eUP008\u003c/code\u003e not to apply when \u003ccode\u003e__class__\u003c/code\u003e is a local variable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20497\"\u003e#20497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Fix \u003ccode\u003eB004\u003c/code\u003e to skip invalid \u003ccode\u003ehasattr\u003c/code\u003e/\u003ccode\u003egetattr\u003c/code\u003e calls (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20486\"\u003e#20486\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Replace \u003ccode\u003e-nan\u003c/code\u003e with \u003ccode\u003enan\u003c/code\u003e when using the value to construct a \u003ccode\u003eDecimal\u003c/code\u003e (\u003ccode\u003eFURB164\u003c/code\u003e ) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20391\"\u003e#20391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd 'Finding ways to help' to CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20567\"\u003e#20567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate import path to \u003ccode\u003eruff-wasm-web\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20539\"\u003e#20539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Clarify the supported hashing functions (\u003ccode\u003eS324\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20534\"\u003e#20534\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eplayground\u003c/code\u003e] Allow hover quick fixes to appear for overlapping diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20527\"\u003e#20527\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eplayground\u003c/code\u003e] Fix non‑BMP code point handling in quick fixes and markers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20526\"\u003e#20526\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/BurntSushi\"\u003e\u003ccode\u003e@​BurntSushi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mtshiba\"\u003e\u003ccode\u003e@​mtshiba\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/second-ed\"\u003e\u003ccode\u003e@​second-ed\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danparizher\"\u003e\u003ccode\u003e@​danparizher\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShikChen\"\u003e\u003ccode\u003e@​ShikChen\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PieterCK\"\u003e\u003ccode\u003e@​PieterCK\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GDYendell\"\u003e\u003ccode\u003e@​GDYendell\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RazerM\"\u003e\u003ccode\u003e@​RazerM\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/TaKO8Ki\"\u003e\u003ccode\u003e@​TaKO8Ki\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\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/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.13.2\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.13.2\u003c/h2\u003e\n\u003cp\u003eReleased on 2025-09-25.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Implement \u003ccode\u003eblocking-path-method\u003c/code\u003e (\u003ccode\u003eASYNC240\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20264\"\u003e#20264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Implement \u003ccode\u003emap-without-explicit-strict\u003c/code\u003e (\u003ccode\u003eB912\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20429\"\u003e#20429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bultins\u003c/code\u003e] Detect class-scope builtin shadowing in decorators, default args, and attribute initializers (\u003ccode\u003eA003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20178\"\u003e#20178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Implement \u003ccode\u003elogging-eager-conversion\u003c/code\u003e (\u003ccode\u003eRUF065\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19942\"\u003e#19942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003e.pyw\u003c/code\u003e files by default when linting and formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20458\"\u003e#20458\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeduplicate input paths (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20105\"\u003e#20105\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Preserve trailing commas for single-element lists (\u003ccode\u003eC409\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19571\"\u003e#19571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Avoid syntax error from conflict with \u003ccode\u003ePIE790\u003c/code\u003e (\u003ccode\u003ePYI021\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20010\"\u003e#20010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Correct fix for positive \u003ccode\u003emaxsplit\u003c/code\u003e without separator (\u003ccode\u003eSIM905\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20056\"\u003e#20056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix \u003ccode\u003eUP008\u003c/code\u003e not to apply when \u003ccode\u003e__class__\u003c/code\u003e is a local variable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20497\"\u003e#20497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Fix \u003ccode\u003eB004\u003c/code\u003e to skip invalid \u003ccode\u003ehasattr\u003c/code\u003e/\u003ccode\u003egetattr\u003c/code\u003e calls (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20486\"\u003e#20486\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Replace \u003ccode\u003e-nan\u003c/code\u003e with \u003ccode\u003enan\u003c/code\u003e when using the value to construct a \u003ccode\u003eDecimal\u003c/code\u003e (\u003ccode\u003eFURB164\u003c/code\u003e ) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20391\"\u003e#20391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd 'Finding ways to help' to CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20567\"\u003e#20567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate import path to \u003ccode\u003eruff-wasm-web\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20539\"\u003e#20539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Clarify the supported hashing functions (\u003ccode\u003eS324\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20534\"\u003e#20534\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eplayground\u003c/code\u003e] Allow hover quick fixes to appear for overlapping diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20527\"\u003e#20527\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eplayground\u003c/code\u003e] Fix non‑BMP code point handling in quick fixes and markers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20526\"\u003e#20526\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/BurntSushi\"\u003e\u003ccode\u003e@​BurntSushi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mtshiba\"\u003e\u003ccode\u003e@​mtshiba\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/second-ed\"\u003e\u003ccode\u003e@​second-ed\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danparizher\"\u003e\u003ccode\u003e@​danparizher\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShikChen\"\u003e\u003ccode\u003e@​ShikChen\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PieterCK\"\u003e\u003ccode\u003e@​PieterCK\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GDYendell\"\u003e\u003ccode\u003e@​GDYendell\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RazerM\"\u003e\u003ccode\u003e@​RazerM\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/TaKO8Ki\"\u003e\u003ccode\u003e@​TaKO8Ki\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\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/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.13.1\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/astral-sh/ruff/commit/b0bdf0334e38417f8617057cd0392a4b53954120\"\u003e\u003ccode\u003eb0bdf03\u003c/code\u003e\u003c/a\u003e Bump 0.13.2 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20576\"\u003e#20576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7331d393c555ece88aa69f685562163790ddf611\"\u003e\u003ccode\u003e7331d39\u003c/code\u003e\u003c/a\u003e Update rooster to 0.1.0 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20575\"\u003e#20575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/529e5fa6c24ea68501adb18245eab27c701598d2\"\u003e\u003ccode\u003e529e5fa\u003c/code\u003e\u003c/a\u003e [ty] Ecosystem analyzer: timing report (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20571\"\u003e#20571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/efbb80f7475c63b62981444d5c429109ff12ad32\"\u003e\u003ccode\u003eefbb80f\u003c/code\u003e\u003c/a\u003e [ty] Remove hack in protocol satisfiability check (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20568\"\u003e#20568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9f3cffc65cb834661e17263245761a66f9474af0\"\u003e\u003ccode\u003e9f3cffc\u003c/code\u003e\u003c/a\u003e Add 'Finding ways to help' to CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20567\"\u003e#20567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/21be94ac33f445d8a681babec6c56ca3d1b67156\"\u003e\u003ccode\u003e21be94a\u003c/code\u003e\u003c/a\u003e [ty] Explicitly test assignability/subtyping between unions of nominal types ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b7d5dc98c193cc5cab00d557b6a392d35137d990\"\u003e\u003ccode\u003eb7d5dc9\u003c/code\u003e\u003c/a\u003e [ty] Add tests for interactions of \u003ccode\u003e@classmethod\u003c/code\u003e, \u003ccode\u003e@staticmethod\u003c/code\u003e, and proto...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e1bb74b25a0f730a5baff263d753ffe03cf857b1\"\u003e\u003ccode\u003ee1bb74b\u003c/code\u003e\u003c/a\u003e [ty] Match variadic argument to variadic parameter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20511\"\u003e#20511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/edeb45804ef9dbe348d393f3ab77288062a3c77e\"\u003e\u003ccode\u003eedeb458\u003c/code\u003e\u003c/a\u003e [ty] fallback to resolve_real_module in file_to_module (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20461\"\u003e#20461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bea92c822980b1575d58542dffa2c960393d7603\"\u003e\u003ccode\u003ebea92c8\u003c/code\u003e\u003c/a\u003e [ty] More precise type inference for dictionary literals (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20523\"\u003e#20523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.12.7...0.13.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `trio` 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/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003ebool(trio.Event)\u003c/code\u003e and have it raise a \u003ccode\u003eDeprecationWarning\u003c/code\u003e and tell users to use \u003ccode\u003etrio.Event.is_set\u003c/code\u003e instead. This is an alternative to \u003ccode\u003emypy --enable-error-code=truthy-bool\u003c/code\u003e for users who don't use type checking. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3322\"\u003epython-trio/trio#3322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen misnesting nurseries you now get a helpful \u003ccode\u003eRuntimeError\u003c/code\u003e instead of a catastrophic \u003ccode\u003eTrioInternalError\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3307\"\u003epython-trio/trio#3307\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/python-trio/trio/commit/94b7244505212061e21507c84725ef28be2705dd\"\u003e\u003ccode\u003e94b7244\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/439de50f5e3c9a718a2b4ed5790f27198de33e13\"\u003e\u003ccode\u003e439de50\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/cc148cfc0f23934aa603012b4f152c990e375f62\"\u003e\u003ccode\u003ecc148cf\u003c/code\u003e\u003c/a\u003e Suppress GeneratorExit from \u003ccode\u003e.aclose()\u003c/code\u003e for \u003ccode\u003eas_safe_channel\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3325\"\u003e#3325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/fc352b2b8ee84071273142375d8babb44333d115\"\u003e\u003ccode\u003efc352b2\u003c/code\u003e\u003c/a\u003e check for nursery misnesting on task exit (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/5bfba27b23f9a1f1bac86880b341bcfab54e43f2\"\u003e\u003ccode\u003e5bfba27\u003c/code\u003e\u003c/a\u003e Improve REPL KI (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3030\"\u003e#3030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/7cc7f6b9249f654627fb6b6737115a0900704c19\"\u003e\u003ccode\u003e7cc7f6b\u003c/code\u003e\u003c/a\u003e Define \u003ccode\u003etrio.Event.__bool__()\u003c/code\u003e to reduce bugs (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3322\"\u003e#3322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/8dd7d8ea38346b5effdfcc0669b356380eb670c9\"\u003e\u003ccode\u003e8dd7d8e\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3323\"\u003e#3323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/02c3794913a04a030f1f2ea76fb67b69abd90c3c\"\u003e\u003ccode\u003e02c3794\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003etyping_extensions\u003c/code\u003e requirement\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c3a0a762c343e5e4876725da18714bc79f38314f\"\u003e\u003ccode\u003ec3a0a76\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e,\u003c/code\u003e -\u0026gt; \u003ccode\u003e;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/e34ce248d6d1713a1986d13c93f2f49dda457228\"\u003e\u003ccode\u003ee34ce24\u003c/code\u003e\u003c/a\u003e Add message properly\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/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 `types-boto3` from 1.40.0 to 1.40.42\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/releases\"\u003etypes-boto3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.8.0 - Python 3.8 runtime is back\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e \u003ccode\u003einstall_requires\u003c/code\u003e section is calculated based on dependencies in use, so \u003ccode\u003etyping-extensions\u003c/code\u003e version is set properly\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Replaced \u003ccode\u003etyping\u003c/code\u003e imports with \u003ccode\u003ecollections.abc\u003c/code\u003e with a fallback to \u003ccode\u003etyping\u003c/code\u003e for Python \u0026lt;3.9\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Added aliases for \u003ccode\u003ebuiltins.list\u003c/code\u003e, \u003ccode\u003ebuiltins.set\u003c/code\u003e, \u003ccode\u003ebuiltins.dict\u003c/code\u003e, and \u003ccode\u003ebuiltins.type\u003c/code\u003e, so Python 3.8 runtime should work as expected again (reported by \u003ca href=\"https://github.com/YHallouard\"\u003e\u003ccode\u003e@​YHallouard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/340\"\u003e#340\u003c/a\u003e and \u003ca href=\"https://github.com/Omri-Ben-Yair\"\u003e\u003ccode\u003e@​Omri-Ben-Yair\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Unions use the same type annotations as the rest of the structures due to proper fallbacks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Universal input/output shapes were not replaced properly in service subresources\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[docs]\u003c/code\u003e Simplified doc links rendering for services\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Cleaned up unnecessary imports in \u003ccode\u003eclient.pyi\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[builder]\u003c/code\u003e Import records with fallback are always rendered\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pyyaml` from 6.0.12.20250516 to 6.0.12.20250915\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\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\n_Description has been truncated_","html_url":"https://github.com/karpetrosyan/hishel/pull/380","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/karpetrosyan%2Fhishel/issues/380","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/380/packages"},{"uuid":"2872537384","node_id":"PR_kwDOO8FTy86rN3Eo","number":32,"state":"open","title":"Bump trio from 0.30.0 to 0.31.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-30T01:04:07.000Z","updated_at":"2025-09-30T01:04:07.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"trio","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/python-trio/trio"}],"path":null,"ecosystem":"pip"},"body":"Bumps [trio](https://github.com/python-trio/trio) 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/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003ebool(trio.Event)\u003c/code\u003e and have it raise a \u003ccode\u003eDeprecationWarning\u003c/code\u003e and tell users to use \u003ccode\u003etrio.Event.is_set\u003c/code\u003e instead. This is an alternative to \u003ccode\u003emypy --enable-error-code=truthy-bool\u003c/code\u003e for users who don't use type checking. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3322\"\u003epython-trio/trio#3322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen misnesting nurseries you now get a helpful \u003ccode\u003eRuntimeError\u003c/code\u003e instead of a catastrophic \u003ccode\u003eTrioInternalError\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3307\"\u003epython-trio/trio#3307\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/python-trio/trio/commit/94b7244505212061e21507c84725ef28be2705dd\"\u003e\u003ccode\u003e94b7244\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/439de50f5e3c9a718a2b4ed5790f27198de33e13\"\u003e\u003ccode\u003e439de50\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/cc148cfc0f23934aa603012b4f152c990e375f62\"\u003e\u003ccode\u003ecc148cf\u003c/code\u003e\u003c/a\u003e Suppress GeneratorExit from \u003ccode\u003e.aclose()\u003c/code\u003e for \u003ccode\u003eas_safe_channel\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3325\"\u003e#3325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/fc352b2b8ee84071273142375d8babb44333d115\"\u003e\u003ccode\u003efc352b2\u003c/code\u003e\u003c/a\u003e check for nursery misnesting on task exit (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/5bfba27b23f9a1f1bac86880b341bcfab54e43f2\"\u003e\u003ccode\u003e5bfba27\u003c/code\u003e\u003c/a\u003e Improve REPL KI (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3030\"\u003e#3030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/7cc7f6b9249f654627fb6b6737115a0900704c19\"\u003e\u003ccode\u003e7cc7f6b\u003c/code\u003e\u003c/a\u003e Define \u003ccode\u003etrio.Event.__bool__()\u003c/code\u003e to reduce bugs (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3322\"\u003e#3322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/8dd7d8ea38346b5effdfcc0669b356380eb670c9\"\u003e\u003ccode\u003e8dd7d8e\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3323\"\u003e#3323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/02c3794913a04a030f1f2ea76fb67b69abd90c3c\"\u003e\u003ccode\u003e02c3794\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003etyping_extensions\u003c/code\u003e requirement\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c3a0a762c343e5e4876725da18714bc79f38314f\"\u003e\u003ccode\u003ec3a0a76\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e,\u003c/code\u003e -\u0026gt; \u003ccode\u003e;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/e34ce248d6d1713a1986d13c93f2f49dda457228\"\u003e\u003ccode\u003ee34ce24\u003c/code\u003e\u003c/a\u003e Add message properly\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trio\u0026package-manager=pip\u0026previous-version=0.30.0\u0026new-version=0.31.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\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/dYoshitakaKato/twitch-to-youtube/pull/32","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/dYoshitakaKato%2Ftwitch-to-youtube/issues/32","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/32/packages"},{"uuid":"2848128153","node_id":"PR_kwDOAAksi86pwvyZ","number":28,"state":"closed","title":"Bump trio from 0.30.0 to 0.31.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-09-25T10:51:29.000Z","author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-22T06:45:06.000Z","updated_at":"2025-09-25T10:51:30.000Z","time_to_close":273983,"merged_at":"2025-09-25T10:51:29.000Z","merged_by":"aquarion","closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"trio","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/python-trio/trio"}],"path":null,"ecosystem":"pip"},"body":"Bumps [trio](https://github.com/python-trio/trio) 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/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003ebool(trio.Event)\u003c/code\u003e and have it raise a \u003ccode\u003eDeprecationWarning\u003c/code\u003e and tell users to use \u003ccode\u003etrio.Event.is_set\u003c/code\u003e instead. This is an alternative to \u003ccode\u003emypy --enable-error-code=truthy-bool\u003c/code\u003e for users who don't use type checking. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3322\"\u003epython-trio/trio#3322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen misnesting nurseries you now get a helpful \u003ccode\u003eRuntimeError\u003c/code\u003e instead of a catastrophic \u003ccode\u003eTrioInternalError\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3307\"\u003epython-trio/trio#3307\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/python-trio/trio/commit/94b7244505212061e21507c84725ef28be2705dd\"\u003e\u003ccode\u003e94b7244\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/439de50f5e3c9a718a2b4ed5790f27198de33e13\"\u003e\u003ccode\u003e439de50\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/cc148cfc0f23934aa603012b4f152c990e375f62\"\u003e\u003ccode\u003ecc148cf\u003c/code\u003e\u003c/a\u003e Suppress GeneratorExit from \u003ccode\u003e.aclose()\u003c/code\u003e for \u003ccode\u003eas_safe_channel\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3325\"\u003e#3325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/fc352b2b8ee84071273142375d8babb44333d115\"\u003e\u003ccode\u003efc352b2\u003c/code\u003e\u003c/a\u003e check for nursery misnesting on task exit (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/5bfba27b23f9a1f1bac86880b341bcfab54e43f2\"\u003e\u003ccode\u003e5bfba27\u003c/code\u003e\u003c/a\u003e Improve REPL KI (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3030\"\u003e#3030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/7cc7f6b9249f654627fb6b6737115a0900704c19\"\u003e\u003ccode\u003e7cc7f6b\u003c/code\u003e\u003c/a\u003e Define \u003ccode\u003etrio.Event.__bool__()\u003c/code\u003e to reduce bugs (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3322\"\u003e#3322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/8dd7d8ea38346b5effdfcc0669b356380eb670c9\"\u003e\u003ccode\u003e8dd7d8e\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3323\"\u003e#3323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/02c3794913a04a030f1f2ea76fb67b69abd90c3c\"\u003e\u003ccode\u003e02c3794\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003etyping_extensions\u003c/code\u003e requirement\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c3a0a762c343e5e4876725da18714bc79f38314f\"\u003e\u003ccode\u003ec3a0a76\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e,\u003c/code\u003e -\u0026gt; \u003ccode\u003e;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/e34ce248d6d1713a1986d13c93f2f49dda457228\"\u003e\u003ccode\u003ee34ce24\u003c/code\u003e\u003c/a\u003e Add message properly\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trio\u0026package-manager=pip\u0026previous-version=0.30.0\u0026new-version=0.31.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\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/aquarion/Lifestream/pull/28","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/aquarion%2FLifestream/issues/28","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/28/packages"}],"issue_packages":[{"old_version":"0.30.0","new_version":"0.33.0","update_type":"minor","path":"/python/x402_a2a","pr_created_at":"2026-05-24T23:32:22.000Z","version_change":"0.30.0 → 0.33.0","issue":{"uuid":"4513302201","node_id":"PR_kwDOO5U75M7e251q","number":113,"state":"open","title":"chore(deps-dev)(deps-dev): bump the x402-a2a-dev group in /python/x402_a2a with 4 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-24T23:32:22.000Z","updated_at":"2026-05-24T23:32:22.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)(deps-dev): bump","group_name":"x402-a2a-dev","update_count":4,"packages":[{"name":"pytest-mock","old_version":"3.14.1","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"trio","old_version":"0.30.0","new_version":"0.33.0","repository_url":"https://github.com/python-trio/trio"},{"name":"ruff","old_version":"0.13.1","new_version":"0.15.13","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mypy","old_version":"1.18.2","new_version":"1.20.2","repository_url":"https://github.com/python/mypy"}],"path":"/python/x402_a2a","ecosystem":"pip"},"body":"Bumps the x402-a2a-dev group in /python/x402_a2a with 4 updates: [pytest-mock](https://github.com/pytest-dev/pytest-mock), [trio](https://github.com/python-trio/trio), [ruff](https://github.com/astral-sh/ruff) and [mypy](https://github.com/python/mypy).\n\nUpdates `pytest-mock` from 3.14.1 to 3.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-mock/releases\"\u003epytest-mock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.15.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-09-16\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/529\"\u003e#529\u003c/a\u003e: Fixed \u003ccode\u003eitertools._tee object has no attribute error\u003c/code\u003e -- now \u003ccode\u003eduplicate_iterators=True\u003c/code\u003e must be passed to \u003ccode\u003emocker.spy\u003c/code\u003e to duplicate iterators.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.15.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-09-04\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.8 (EOL) is no longer supported.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/pull/524\"\u003e#524\u003c/a\u003e: Added \u003ccode\u003espy_return_iter\u003c/code\u003e to \u003ccode\u003emocker.spy\u003c/code\u003e, which contains a duplicate of the return value of the spied method if it is an \u003ccode\u003eIterator\u003c/code\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/pytest-dev/pytest-mock/blob/main/CHANGELOG.rst\"\u003epytest-mock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.15.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-09-16\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#529](https://github.com/pytest-dev/pytest-mock/issues/529) \u0026lt;https://github.com/pytest-dev/pytest-mock/issues/529\u0026gt;\u003c/code\u003e_: Fixed \u003ccode\u003eitertools._tee object has no attribute error\u003c/code\u003e -- now \u003ccode\u003eduplicate_iterators=True\u003c/code\u003e must be passed to \u003ccode\u003emocker.spy\u003c/code\u003e to duplicate iterators.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.15.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-09-04\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.8 (EOL) is no longer supported.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#524](https://github.com/pytest-dev/pytest-mock/issues/524) \u0026lt;https://github.com/pytest-dev/pytest-mock/pull/524\u0026gt;\u003c/code\u003e_: Added \u003ccode\u003espy_return_iter\u003c/code\u003e to \u003ccode\u003emocker.spy\u003c/code\u003e, which contains a duplicate of the return value of the spied method if it is an \u003ccode\u003eIterator\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/pytest-dev/pytest-mock/commit/e1b5c62a38c5a05cae614aef3847f240ba50d269\"\u003e\u003ccode\u003ee1b5c62\u003c/code\u003e\u003c/a\u003e Release 3.15.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/184eb190d6be417f5f33727bcbc9704909479498\"\u003e\u003ccode\u003e184eb19\u003c/code\u003e\u003c/a\u003e Set \u003ccode\u003espy_return_iter\u003c/code\u003e only when explicitly requested (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/537\"\u003e#537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/4fa0088a0aa85eefb1313bd97adf43889bf1f647\"\u003e\u003ccode\u003e4fa0088\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/f5aff33ce71ed4620acc43dc41cb3b198bcf4cb0\"\u003e\u003ccode\u003ef5aff33\u003c/code\u003e\u003c/a\u003e Fix test failure with pytest 8+ and verbose mode (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/535\"\u003e#535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/adc41873c9d6aa69b87e3f108c93a29c847869aa\"\u003e\u003ccode\u003eadc4187\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/533\"\u003e#533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/95ad5700609aae73c6f767b8cc2ccfb2483e0f5c\"\u003e\u003ccode\u003e95ad570\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/532\"\u003e#532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/e696bf02c199b1f7d0c48adb450f40e5a75b699a\"\u003e\u003ccode\u003ee696bf0\u003c/code\u003e\u003c/a\u003e Fix standalone mock support (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/5b29b03ce9581cfcd867dd6c04a970fb2c861291\"\u003e\u003ccode\u003e5b29b03\u003c/code\u003e\u003c/a\u003e Fix gen-release-notes script\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/7d22ef4e560351832e60687d8bd15ebe2785ff3b\"\u003e\u003ccode\u003e7d22ef4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/528\"\u003e#528\u003c/a\u003e from pytest-dev/release-3.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/90b29f89e2086c139a7b4fea89202faa192ee5a9\"\u003e\u003ccode\u003e90b29f8\u003c/code\u003e\u003c/a\u003e Update CHANGELOG for 3.15.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-mock/compare/v3.14.1...v3.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `trio` from 0.30.0 to 0.33.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.33.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.32.0...v0.33.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.32.0...v0.33.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStart supporting Android's new \u003ccode\u003e\u0026quot;android\u0026quot;\u003c/code\u003e \u003ccode\u003esys.platform\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3357\"\u003epython-trio/trio#3357\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBoth \u003ccode\u003etrio.testing.RaisesGroup\u003c/code\u003e and \u003ccode\u003etrio.testing.Matcher\u003c/code\u003e have been deprecated. Pytest alternatives \u003ccode\u003epytest.RaisesGroup\u003c/code\u003e and \u003ccode\u003epytest.RaisesExc\u003c/code\u003e (respectively) are considered correct replacement. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3326\"\u003epython-trio/trio#3326\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow \u003ccode\u003etrio.CapacityLimiter\u003c/code\u003e to have zero total_tokens. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3321\"\u003epython-trio/trio#3321\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where iterating over an \u003ccode\u003e@as_safe_channel\u003c/code\u003e-derived \u003ccode\u003eReceiveChannel\u003c/code\u003e would raise \u003ccode\u003etrio.BrokenResourceError\u003c/code\u003e if the channel was closed by another task. It now shuts down cleanly. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3331\"\u003epython-trio/trio#3331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etrio.lowlevel.Task.iter_await_frames\u003c/code\u003e now works on completed tasks, by returning an empty list of frames if the underlying coroutine has been closed. Previously, it raised an internal error. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3337\"\u003epython-trio/trio#3337\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals without deprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003epython-trio/trio#3345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDecrease indentation for exception groups raised in \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3332\"\u003epython-trio/trio#3332\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\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/python-trio/trio/commit/3073f0c2108bad83c27dda6c83474a9b8ce4a957\"\u003e\u003ccode\u003e3073f0c\u003c/code\u003e\u003c/a\u003e Bump version to 0.33.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c21654b5f8375c5104625e6748492913cdb9d304\"\u003e\u003ccode\u003ec21654b\u003c/code\u003e\u003c/a\u003e Bump dependencies from commit 694044 (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3391\"\u003e#3391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/69404459f8eb0f7c4ca1433174fa0f5e9bad38ff\"\u003e\u003ccode\u003e6940445\u003c/code\u003e\u003c/a\u003e Documentation search improvements (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/e27a303941ae2bf63f2d2556b387e06262aa91f9\"\u003e\u003ccode\u003ee27a303\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3384\"\u003e#3384\u003c/a\u003e from A5rocks/update-sphinx\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/93b989b36befc55c5bded3f51a82a00a2aca37e8\"\u003e\u003ccode\u003e93b989b\u003c/code\u003e\u003c/a\u003e Add coredis and streaQ libraries to documentation (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3389\"\u003e#3389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/bc94ce138fa81f460f0d65f38a03cf3db04e6fe3\"\u003e\u003ccode\u003ebc94ce1\u003c/code\u003e\u003c/a\u003e Add coredis and streaQ libraries to documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/1ee96c8d84718cf32ef607a08b9069c8c2cdcc9f\"\u003e\u003ccode\u003e1ee96c8\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3387\"\u003e#3387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/95d92051c5acf71d717c77c7c996d4d0db3ab952\"\u003e\u003ccode\u003e95d9205\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3386\"\u003e#3386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/21250b16b52826ca1b6a38a8f08ecd40974c2c22\"\u003e\u003ccode\u003e21250b1\u003c/code\u003e\u003c/a\u003e Update to Sphinx 9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/4a9c6db4dd1a30bda74a08cf1e9a24c4777d9471\"\u003e\u003ccode\u003e4a9c6db\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3382\"\u003e#3382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.33.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.13.1 to 0.15.13\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.15.13\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\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/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.15.13\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\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/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\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/astral-sh/ruff/commit/2afb467ce397e4a89c13a0a814c62cfecb0e9e49\"\u003e\u003ccode\u003e2afb467\u003c/code\u003e\u003c/a\u003e Bump 0.15.13 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25157\"\u003e#25157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/300879600fa3af7cde1e675c63de6ad9d0797d1b\"\u003e\u003ccode\u003e3008796\u003c/code\u003e\u003c/a\u003e [ty] classify TypeVar semantic tokens as type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24891\"\u003e#24891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/79470e31877acb6074f3bbff2a49e508822ae4e8\"\u003e\u003ccode\u003e79470e3\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2522549901d50f18775999f0fb802b19229417f0\"\u003e\u003ccode\u003e2522549\u003c/code\u003e\u003c/a\u003e Remove shellcheck from prek (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25154\"\u003e#25154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7db7170020f539d6d2bc01dbd0b0c09fab91dc06\"\u003e\u003ccode\u003e7db7170\u003c/code\u003e\u003c/a\u003e [ty] Support TypedDict key completions in incomplete, anonymous contexts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25\"\u003e#25\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bb3dd535f1c5a83e2e56ac93a771fadbeeceebd0\"\u003e\u003ccode\u003ebb3dd53\u003c/code\u003e\u003c/a\u003e [ty] Run full iteration analysis on narrowed typevars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25143\"\u003e#25143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/828cdb7732efcb16a53f4ee5f011cf653b834d1a\"\u003e\u003ccode\u003e828cdb7\u003c/code\u003e\u003c/a\u003e [ty] Isolate file-watching test environment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25151\"\u003e#25151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/89e1d8670ea4d3af60c8143ee552dc750200718d\"\u003e\u003ccode\u003e89e1d86\u003c/code\u003e\u003c/a\u003e [ty] Preserve TypedDict keys through dict unpacking (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24523\"\u003e#24523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/86f3064d6fffa5697d174f26b840bd6857b381da\"\u003e\u003ccode\u003e86f3064\u003c/code\u003e\u003c/a\u003e [ty] Avoid accessing \u003ccode\u003eargs[0]\u003c/code\u003e for \u003ccode\u003estatic_assert\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25149\"\u003e#25149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed819f947dc27e36eac8bb3134153c4668d76a3a\"\u003e\u003ccode\u003eed819f9\u003c/code\u003e\u003c/a\u003e [ty] Treat custom enum \u003ccode\u003e__new__\u003c/code\u003e values as dynamic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25136\"\u003e#25136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.13.1...0.15.13\"\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 1.20.2\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 1.20.2\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse WAL with SQLite cache and fix close (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21154\"\u003e21154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdjust SQLite journal mode (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21217\"\u003e21217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCorrectly aggregate narrowing information on parent expressions (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21206\"\u003e21206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression related to generic callables (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21208\"\u003e21208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression by avoiding widening types in some contexts (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21242\"\u003e21242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix slicing in non-strict optional mode (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21282\"\u003e21282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emypyc: Fix match statement semantics for \u0026quot;or\u0026quot; pattern (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21156\"\u003e21156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emypyc: Fix issue with module dunder attributes (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21275\"\u003e21275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInitial support for Python 3.15.0a8 (Marc Mueller, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21255\"\u003e21255\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\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eAaron Wieczorek\u003c/li\u003e\n\u003cli\u003eAdam Turner\u003c/li\u003e\n\u003cli\u003eAli Hamdan\u003c/li\u003e\n\u003cli\u003easce\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003eBrent Westbrook\u003c/li\u003e\n\u003cli\u003eBrian Schubert\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChris Burroughs\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eColin Watson\u003c/li\u003e\n\u003cli\u003eDonghoon Nam\u003c/li\u003e\n\u003cli\u003eE. M. Bray\u003c/li\u003e\n\u003cli\u003eEmma Smith\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eGeorge Ogden\u003c/li\u003e\n\u003cli\u003egetzze\u003c/li\u003e\n\u003cli\u003egrayjk\u003c/li\u003e\n\u003cli\u003eGregor Riepl\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilliard\u003c/li\u003e\n\u003cli\u003eJames Le Cuirot\u003c/li\u003e\n\u003cli\u003eJeremy Nimmer\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eKai (Kazuya Ito)\u003c/li\u003e\n\u003cli\u003ekaushal trivedi\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eLukas Geiger\u003c/li\u003e\n\u003cli\u003eŁukasz Langa\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael R. Crusoe\u003c/li\u003e\n\u003cli\u003emichaelm-openai\u003c/li\u003e\n\u003cli\u003eNeil Schemenauer\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/145a062651b5f9996b75ef32b7040bd2e885ed82\"\u003e\u003ccode\u003e145a062\u003c/code\u003e\u003c/a\u003e Bump version to 1.20.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/81cd49215c288eacb987de066f02daff2553b7c7\"\u003e\u003ccode\u003e81cd492\u003c/code\u003e\u003c/a\u003e Fix slicing with nonstrict optional (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21282\"\u003e#21282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/908d3441eecbaa2a6193165317177db834d7ca1a\"\u003e\u003ccode\u003e908d344\u003c/code\u003e\u003c/a\u003e [mypyc] Set dunder attrs when adding module to sys.modules (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/ba28610fac9d2b33be210ca8dcfe4bc47b7af424\"\u003e\u003ccode\u003eba28610\u003c/code\u003e\u003c/a\u003e Initial support for Python 3.15.0a8 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21255\"\u003e#21255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7b0e09f48dbd3717ed008a273cd17e8e960c2037\"\u003e\u003ccode\u003e7b0e09f\u003c/code\u003e\u003c/a\u003e Fix match statement semantics for \u0026quot;or\u0026quot; pattern (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21156\"\u003e#21156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/92b74f226de62f7505f5ef5cb158e8ec9c58b8b7\"\u003e\u003ccode\u003e92b74f2\u003c/code\u003e\u003c/a\u003e Avoid widening types in conditional_types (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21242\"\u003e#21242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/0dcbfaa40b0e360a16baea9cf851955375d91b54\"\u003e\u003ccode\u003e0dcbfaa\u003c/code\u003e\u003c/a\u003e Fix is_overlapping_types for generic callables (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21208\"\u003e#21208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/210f518dede35292033ef0d387847406a0ccef8f\"\u003e\u003ccode\u003e210f518\u003c/code\u003e\u003c/a\u003e Correctly aggregate narrowing information on parent expressions (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21206\"\u003e#21206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c34530e53a10e385d8b0f1af4baa88a596b5ceaa\"\u003e\u003ccode\u003ec34530e\u003c/code\u003e\u003c/a\u003e Only set journal mode in coordinator (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21217\"\u003e#21217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/79a3ec6d01b56a27c00e9b3320c2b1d4d73a77f9\"\u003e\u003ccode\u003e79a3ec6\u003c/code\u003e\u003c/a\u003e Use WAL with SQLite cache, fix close (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21154\"\u003e#21154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.18.2...v1.20.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nYou can trigger a rebase of this PR 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/google-agentic-commerce/a2a-x402/pull/113","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/google-agentic-commerce%2Fa2a-x402/issues/113","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/113/packages"}},{"old_version":"0.32.0","new_version":"0.33.0","update_type":"minor","path":null,"pr_created_at":"2026-03-01T11:29:21.000Z","version_change":"0.32.0 → 0.33.0","issue":{"uuid":"4006974431","node_id":"PR_kwDOD4wtHM7HHYNh","number":112,"state":"closed","title":"chore(deps-dev): bump the python-packages group across 1 directory with 7 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-12T15:32:39.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-01T11:29:21.000Z","updated_at":"2026-03-12T15:32:41.000Z","time_to_close":964998,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"python-packages","update_count":7,"packages":[{"name":"coverage","old_version":"7.13.2","new_version":"7.13.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"mypy","old_version":"1.16.1","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"ruff","old_version":"0.14.14","new_version":"0.15.4","repository_url":"https://github.com/astral-sh/ruff"},{"name":"trio","old_version":"0.32.0","new_version":"0.33.0","repository_url":"https://github.com/python-trio/trio"},{"name":"mkdocstrings","old_version":"1.0.2","new_version":"1.0.3","repository_url":"https://github.com/mkdocstrings/mkdocstrings"},{"name":"mkdocstrings-python","old_version":"2.0.1","new_version":"2.0.3","repository_url":"https://github.com/mkdocstrings/python"},{"name":"zensical","old_version":"0.0.23","new_version":"0.0.24","repository_url":"https://github.com/zensical/zensical"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.2` | `7.13.4` |\n| [mypy](https://github.com/python/mypy) | `1.16.1` | `1.19.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.14` | `0.15.4` |\n| [trio](https://github.com/python-trio/trio) | `0.32.0` | `0.33.0` |\n| [mkdocstrings](https://github.com/mkdocstrings/mkdocstrings) | `1.0.2` | `1.0.3` |\n| [mkdocstrings-python](https://github.com/mkdocstrings/python) | `2.0.1` | `2.0.3` |\n| [zensical](https://github.com/zensical/zensical) | `0.0.23` | `0.0.24` |\n\n\nUpdates `coverage` from 7.13.2 to 7.13.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.13.4 — 2026-02-09\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the third-party code fix in 7.13.3 required examining the parent\ndirectories where coverage was run. In the unusual situation that one of the\nparent directories is unreadable, a PermissionError would occur, as\ndescribed in \u003ccode\u003eissue 2129\u003c/code\u003e_. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: in test suites that change sys.path, coverage.py could fail with\n\u0026quot;RuntimeError: Set changed size during iteration\u0026quot; as described and fixed in\n\u003ccode\u003epull 2130\u003c/code\u003e_. Thanks, Noah Fatsi.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe now publish ppc64le wheels, thanks to \u003ccode\u003ePankhudi Jain \u0026lt;pull 2121_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2121: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2121\"\u003ecoveragepy/coveragepy#2121\u003c/a\u003e\n.. _issue 2129: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2129\"\u003ecoveragepy/coveragepy#2129\u003c/a\u003e\n.. _pull 2130: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2130\"\u003ecoveragepy/coveragepy#2130\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-3:\u003c/p\u003e\n\u003ch2\u003eVersion 7.13.3 — 2026-02-03\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: in some situations, third-party code was measured when it shouldn't have\nbeen, slowing down test execution. This happened with layered virtual\nenvironments such as uv sometimes makes. The problem is fixed, closing \u003ccode\u003eissue 2082\u003c/code\u003e_. Now any directory on sys.path that is inside a virtualenv is\nconsidered third-party code.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2082: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2082\"\u003ecoveragepy/coveragepy#2082\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-2:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/4f78d57f83ff8a4976043e8a8fcea24b91891840\"\u003e\u003ccode\u003e4f78d57\u003c/code\u003e\u003c/a\u003e build: no need to publish status.json\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f8616ff5e6386648aa40300e36c6cecda79a1faa\"\u003e\u003ccode\u003ef8616ff\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/fcf8c68db986970e6000bf75ec3c3115ede867df\"\u003e\u003ccode\u003efcf8c68\u003c/code\u003e\u003c/a\u003e docs: prep for 7.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/189ecfd000867e5c74e7d74ee3bd75742d5d584d\"\u003e\u003ccode\u003e189ecfd\u003c/code\u003e\u003c/a\u003e docs: thanks Pankhudi Jain for ppc64le wheels \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2121\"\u003e#2121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/58aade0eb92d9d1e3755c65a5cf7a951e7bd6c6a\"\u003e\u003ccode\u003e58aade0\u003c/code\u003e\u003c/a\u003e build: add support for ppc64le architecture (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2121\"\u003e#2121\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8ea42c874fbfc96535156300225bda22bc93ac68\"\u003e\u003ccode\u003e8ea42c8\u003c/code\u003e\u003c/a\u003e chore: bump actions/attest-build-provenance (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2131\"\u003e#2131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c09595f70758b78156efbd7c8f034799d09322aa\"\u003e\u003ccode\u003ec09595f\u003c/code\u003e\u003c/a\u003e docs: Janine put a lot of effort into debugging issue \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2128\"\u003e#2128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8ee1760f40b8822aa2b11ff95ab63481be68a8a0\"\u003e\u003ccode\u003e8ee1760\u003c/code\u003e\u003c/a\u003e docs: Greg wrote a great issue: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2129\"\u003e#2129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/76ba0437611fc2787cb0450dc94b02bc2848fdee\"\u003e\u003ccode\u003e76ba043\u003c/code\u003e\u003c/a\u003e docs: thanks, Noah Fatsi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/371fcc5727e9d8fba816061756af94646b4bcfbb\"\u003e\u003ccode\u003e371fcc5\u003c/code\u003e\u003c/a\u003e fix: set fixed paths_list in TreeMatcher init (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2130\"\u003e#2130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.2...7.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.16.1 to 1.19.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 1.19.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix noncommutative joins with bounded TypeVars (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20345\"\u003e20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect output format for cached runs by serializing raw errors in cache metas (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20372\"\u003e20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (A5rocks, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20383\"\u003e20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc generator regression with empty tuple (BobTheBuidler, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20371\"\u003e20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash involving Unpack-ed TypeVarTuple (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20323\"\u003e20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on star import of redefinition (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20333\"\u003e20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on typevar with forward ref used in other module (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20334\"\u003e20334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFail with an explicit error on PyPy (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20389\"\u003e20389\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\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChainfire\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eDavid Foster\u003c/li\u003e\n\u003cli\u003eFrank Dana\u003c/li\u003e\n\u003cli\u003eGuo Ci\u003c/li\u003e\n\u003cli\u003eiap\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilton-Balfe\u003c/li\u003e\n\u003cli\u003ejhance\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003eKarelKenens\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael Carlstrom\u003c/li\u003e\n\u003cli\u003eMichael J. Sullivan\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eRandolf Scholz\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eSigve Sebastian Farstad\u003c/li\u003e\n\u003cli\u003esobolevn\u003c/li\u003e\n\u003cli\u003eStanislav Terliakov\u003c/li\u003e\n\u003cli\u003eStephen Morton\u003c/li\u003e\n\u003cli\u003eTheodore Ando\u003c/li\u003e\n\u003cli\u003eThiago J. Barbalho\u003c/li\u003e\n\u003cli\u003ewyattscarpenter\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 1.18\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.18.1 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\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/412c19a6bde31e7afa7f41afdf8356664689ae80\"\u003e\u003ccode\u003e412c19a\u003c/code\u003e\u003c/a\u003e Bump version to 1.19.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/20aea0a6ca0710f5427239bdd2fd8e8bf1caf634\"\u003e\u003ccode\u003e20aea0a\u003c/code\u003e\u003c/a\u003e Update changelog for 1.19.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20414\"\u003e#20414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b23b507524bf1bd7513eea6f2a16fb91e072cb6\"\u003e\u003ccode\u003e2b23b50\u003c/code\u003e\u003c/a\u003e Serialize raw errors in cache metas (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20372\"\u003e#20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f60f90fb8872bf722e32aefd548daaf6d8560e05\"\u003e\u003ccode\u003ef60f90f\u003c/code\u003e\u003c/a\u003e Fail on PyPy in main instead of setup.py (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20389\"\u003e#20389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/58d485b4ea4776e0b9d4045b306cb0818ecc2aa6\"\u003e\u003ccode\u003e58d485b\u003c/code\u003e\u003c/a\u003e Fail with an explicit error on PyPy (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20384\"\u003e#20384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a4b31a26788b70c4a2a19adbafa2bbda43dc2e8b\"\u003e\u003ccode\u003ea4b31a2\u003c/code\u003e\u003c/a\u003e Allow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20383\"\u003e#20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8a6eff478416cd3ed3931a6ed77ce61c88ab69e9\"\u003e\u003ccode\u003e8a6eff4\u003c/code\u003e\u003c/a\u003e [mypyc] fix generator regression with empty tuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20371\"\u003e#20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/70eceea682c041c0d8e8462dffef9c7bb252e014\"\u003e\u003ccode\u003e70eceea\u003c/code\u003e\u003c/a\u003e Fix noncommutative joins with bounded TypeVars (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20345\"\u003e#20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3890fc49bf7cc02db04b1e63eb2540aaacdeecc0\"\u003e\u003ccode\u003e3890fc4\u003c/code\u003e\u003c/a\u003e Fix crash involving Unpack-ed TypeVarTuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20323\"\u003e#20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c93d917a86993e06dcc88e508f28f4f5199ce1c8\"\u003e\u003ccode\u003ec93d917\u003c/code\u003e\u003c/a\u003e Fix crash on star import of redefinition (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20333\"\u003e#20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.16.1...v1.19.1\"\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.14 to 0.15.4\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.15.4\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-26.\u003c/p\u003e\n\u003cp\u003eThis is a follow-up release to 0.15.3 that resolves a panic when the new rule \u003ccode\u003ePLR1712\u003c/code\u003e was enabled with any rule that analyzes definitions, such as many of the \u003ccode\u003eANN\u003c/code\u003e or \u003ccode\u003eD\u003c/code\u003e rules.\u003c/p\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix panic on access to definitions after analyzing definitions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23588\"\u003e#23588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Suppress false positive in \u003ccode\u003eF821\u003c/code\u003e for names used before \u003ccode\u003edel\u003c/code\u003e in stub files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23550\"\u003e#23550\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify first-party import detection in Ruff (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23591\"\u003e#23591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003eimport-heading\u003c/code\u003e example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23568\"\u003e#23568\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/stakeswky\"\u003e\u003ccode\u003e@​stakeswky\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/thejcannon\"\u003e\u003ccode\u003e@​thejcannon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GeObts\"\u003e\u003ccode\u003e@​GeObts\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.4\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://github.com/astral-sh/ruff/releases/download/0.15.4/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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.15.4\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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-aarch64-apple-darwin.tar.gz\"\u003eruff-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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-x86_64-apple-darwin.tar.gz\"\u003eruff-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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-aarch64-pc-windows-msvc.zip\"\u003eruff-aarch64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-i686-pc-windows-msvc.zip\"\u003eruff-i686-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-x86_64-pc-windows-msvc.zip\"\u003eruff-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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-aarch64-unknown-linux-gnu.tar.gz\"\u003eruff-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://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-aarch64-unknown-linux-gnu.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-i686-unknown-linux-gnu.tar.gz\"\u003eruff-i686-unknown-linux-gnu.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-i686-unknown-linux-gnu.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-powerpc64-unknown-linux-gnu.tar.gz\"\u003eruff-powerpc64-unknown-linux-gnu.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ePPC64 Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-powerpc64-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/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.4\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-26.\u003c/p\u003e\n\u003cp\u003eThis is a follow-up release to 0.15.3 that resolves a panic when the new rule \u003ccode\u003ePLR1712\u003c/code\u003e was enabled with any rule that analyzes definitions, such as many of the \u003ccode\u003eANN\u003c/code\u003e or \u003ccode\u003eD\u003c/code\u003e rules.\u003c/p\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix panic on access to definitions after analyzing definitions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23588\"\u003e#23588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Suppress false positive in \u003ccode\u003eF821\u003c/code\u003e for names used before \u003ccode\u003edel\u003c/code\u003e in stub files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23550\"\u003e#23550\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify first-party import detection in Ruff (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23591\"\u003e#23591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003eimport-heading\u003c/code\u003e example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23568\"\u003e#23568\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/stakeswky\"\u003e\u003ccode\u003e@​stakeswky\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/thejcannon\"\u003e\u003ccode\u003e@​thejcannon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GeObts\"\u003e\u003ccode\u003e@​GeObts\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.3\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-26.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDrop explicit support for \u003ccode\u003e.qmd\u003c/code\u003e file extension (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23572\"\u003e#23572\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThis can now be enabled instead by setting the \u003ca href=\"https://docs.astral.sh/ruff/settings/#extension\"\u003e\u003ccode\u003eextension\u003c/code\u003e\u003c/a\u003e option:\u003c/p\u003e\n\u003cpre lang=\"toml\"\u003e\u003ccode\u003e# ruff.toml\nextension = { qmd = \u0026quot;markdown\u0026quot; }\n\u003ch1\u003epyproject.toml\u003c/h1\u003e\n\u003cp\u003e[tool.ruff]\nextension = { qmd = \u0026quot;markdown\u0026quot; }\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eInclude configured extensions in file discovery (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23400\"\u003e#23400\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Allow suspicious imports in \u003ccode\u003eTYPE_CHECKING\u003c/code\u003e blocks (\u003ccode\u003eS401\u003c/code\u003e-\u003ccode\u003eS415\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23441\"\u003e#23441\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Allow \u003ccode\u003eB901\u003c/code\u003e in pytest hook wrappers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21931\"\u003e#21931\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[\u003ccode\u003eflake8-import-conventions\u003c/code\u003e] Add missing conventions from upstream (\u003ccode\u003eICN001\u003c/code\u003e, \u003ccode\u003eICN002\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21373\"\u003e#21373\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f14edd8661e2803254f89265548c7487f47a09f6\"\u003e\u003ccode\u003ef14edd8\u003c/code\u003e\u003c/a\u003e Bump 0.15.4 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23595\"\u003e#23595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/fd09d370076ab585444fd39f0fee79bf29280b68\"\u003e\u003ccode\u003efd09d37\u003c/code\u003e\u003c/a\u003e Fix panic on access to definitions after analyzing definitions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23588\"\u003e#23588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/81d655fadce087b792e524ed1964e9bcc31b73cd\"\u003e\u003ccode\u003e81d655f\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epyflakes\u003c/code\u003e] suppress false positive in \u003ccode\u003eF821\u003c/code\u003e for names used before \u003ccode\u003edel\u003c/code\u003e in...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/625b4f5a672d1baaa6f25e0999ca428f3f2522f1\"\u003e\u003ccode\u003e625b4f5\u003c/code\u003e\u003c/a\u003e [ruff] docs: Clarify first-party import detection in Ruff (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23591\"\u003e#23591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/60facfa0bc02689637e25237f0df5abfc2f27054\"\u003e\u003ccode\u003e60facfa\u003c/code\u003e\u003c/a\u003e one word typo fix in a \u003ccode\u003ewhile_loop.md\u003c/code\u003e test case (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23589\"\u003e#23589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/fbb9fa75cc1915973a739da0ec469094176bfdc6\"\u003e\u003ccode\u003efbb9fa7\u003c/code\u003e\u003c/a\u003e docs: fix incorrect import-heading example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23568\"\u003e#23568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5bc49a941279c9100ff834edae1cb63053aeec93\"\u003e\u003ccode\u003e5bc49a9\u003c/code\u003e\u003c/a\u003e Increase the ruleset size to 16 bits (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23586\"\u003e#23586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/a62ba8c6e2bac0b899d90fd30a1b26c07aac44bb\"\u003e\u003ccode\u003ea62ba8c\u003c/code\u003e\u003c/a\u003e [ty] Fix overloaded callable assignability for unary Callable targets (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23277\"\u003e#23277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e5f2f36a3f49b45fd7506d42b12c495c2517e936\"\u003e\u003ccode\u003ee5f2f36\u003c/code\u003e\u003c/a\u003e Bump 0.15.3 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23585\"\u003e#23585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/0e19fc9a61477e71abc4eb76f05a129b6b9ab873\"\u003e\u003ccode\u003e0e19fc9\u003c/code\u003e\u003c/a\u003e [ty] defer calculating conjunctions in narrowing constraints (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23552\"\u003e#23552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.14.14...0.15.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `trio` from 0.32.0 to 0.33.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.33.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.32.0...v0.33.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.32.0...v0.33.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStart supporting Android's new \u003ccode\u003e\u0026quot;android\u0026quot;\u003c/code\u003e \u003ccode\u003esys.platform\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3357\"\u003epython-trio/trio#3357\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBoth \u003ccode\u003etrio.testing.RaisesGroup\u003c/code\u003e and \u003ccode\u003etrio.testing.Matcher\u003c/code\u003e have been deprecated. Pytest alternatives \u003ccode\u003epytest.RaisesGroup\u003c/code\u003e and \u003ccode\u003epytest.RaisesExc\u003c/code\u003e (respectively) are considered correct replacement. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3326\"\u003epython-trio/trio#3326\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/python-trio/trio/commit/3073f0c2108bad83c27dda6c83474a9b8ce4a957\"\u003e\u003ccode\u003e3073f0c\u003c/code\u003e\u003c/a\u003e Bump version to 0.33.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c21654b5f8375c5104625e6748492913cdb9d304\"\u003e\u003ccode\u003ec21654b\u003c/code\u003e\u003c/a\u003e Bump dependencies from commit 694044 (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3391\"\u003e#3391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/69404459f8eb0f7c4ca1433174fa0f5e9bad38ff\"\u003e\u003ccode\u003e6940445\u003c/code\u003e\u003c/a\u003e Documentation search improvements (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/e27a303941ae2bf63f2d2556b387e06262aa91f9\"\u003e\u003ccode\u003ee27a303\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3384\"\u003e#3384\u003c/a\u003e from A5rocks/update-sphinx\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/93b989b36befc55c5bded3f51a82a00a2aca37e8\"\u003e\u003ccode\u003e93b989b\u003c/code\u003e\u003c/a\u003e Add coredis and streaQ libraries to documentation (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3389\"\u003e#3389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/bc94ce138fa81f460f0d65f38a03cf3db04e6fe3\"\u003e\u003ccode\u003ebc94ce1\u003c/code\u003e\u003c/a\u003e Add coredis and streaQ libraries to documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/1ee96c8d84718cf32ef607a08b9069c8c2cdcc9f\"\u003e\u003ccode\u003e1ee96c8\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3387\"\u003e#3387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/95d92051c5acf71d717c77c7c996d4d0db3ab952\"\u003e\u003ccode\u003e95d9205\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3386\"\u003e#3386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/21250b16b52826ca1b6a38a8f08ecd40974c2c22\"\u003e\u003ccode\u003e21250b1\u003c/code\u003e\u003c/a\u003e Update to Sphinx 9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/4a9c6db4dd1a30bda74a08cf1e9a24c4777d9471\"\u003e\u003ccode\u003e4a9c6db\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3382\"\u003e#3382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/compare/v0.32.0...v0.33.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocstrings` from 1.0.2 to 1.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases\"\u003emkdocstrings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.0.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases/tag/1.0.3\"\u003e1.0.3\u003c/a\u003e - 2026-02-07\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.2...1.0.3\"\u003eCompare with 1.0.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eForward extension instances directly passed from Zensical (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/65b27ec8d1d671eddf021e48b0114cc3f8aca14a\"\u003e65b27ec\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003cli\u003ePropagate Zensical's \u003ccode\u003ezrelpath\u003c/code\u003e processor (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/dbf263dfdd2fdd769d66fa62bdd388e05988bc78\"\u003edbf263d\u003c/a\u003e by Timothée Mazzucotelli).\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/mkdocstrings/mkdocstrings/blob/main/CHANGELOG.md\"\u003emkdocstrings's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases/tag/1.0.3\"\u003e1.0.3\u003c/a\u003e - 2026-02-07\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.2...1.0.3\"\u003eCompare with 1.0.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eForward extension instances directly passed from Zensical (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/65b27ec8d1d671eddf021e48b0114cc3f8aca14a\"\u003e65b27ec\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003cli\u003ePropagate Zensical's \u003ccode\u003ezrelpath\u003c/code\u003e processor (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/dbf263dfdd2fdd769d66fa62bdd388e05988bc78\"\u003edbf263d\u003c/a\u003e by Timothée Mazzucotelli).\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/mkdocstrings/mkdocstrings/commit/8bdff16af916b7285eae5a07eb085c21754be3b7\"\u003e\u003ccode\u003e8bdff16\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/65b27ec8d1d671eddf021e48b0114cc3f8aca14a\"\u003e\u003ccode\u003e65b27ec\u003c/code\u003e\u003c/a\u003e fix: Forward extension instances directly passed from Zensical\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/1624e2c52fbdff2ee611142edbf52454427f8f8d\"\u003e\u003ccode\u003e1624e2c\u003c/code\u003e\u003c/a\u003e ci: Update lint/type-checking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/cc3d6a4d286668a9a249ac38dfaf8b45470f3314\"\u003e\u003ccode\u003ecc3d6a4\u003c/code\u003e\u003c/a\u003e chore: Template upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/dbf263dfdd2fdd769d66fa62bdd388e05988bc78\"\u003e\u003ccode\u003edbf263d\u003c/code\u003e\u003c/a\u003e fix: Propagate Zensical's \u003ccode\u003ezrelpath\u003c/code\u003e processor\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.2...1.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocstrings-python` from 2.0.1 to 2.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/python/releases\"\u003emkdocstrings-python's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.0.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/python/releases/tag/2.0.3\"\u003e2.0.3\u003c/a\u003e - 2026-02-20\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.2...2.0.3\"\u003eCompare with 2.0.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBuild\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDepend on griffelib instead of griffe (\u003ca href=\"https://github.com/mkdocstrings/python/commit/770a5f69d801f24f0b36d1e671a540196e06f710\"\u003e770a5f6\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.0.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/python/releases/tag/2.0.2\"\u003e2.0.2\u003c/a\u003e - 2026-02-09\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.1...2.0.2\"\u003eCompare with 2.0.1\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix aliases for parameters (\u003ca href=\"https://github.com/mkdocstrings/python/commit/0ae77a3454d47e873be38637ea30d043004ee981\"\u003e0ae77a3\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/mkdocstrings/mkdocstrings/issues/813\"\u003eIssue-mkdocstrings-813\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/mkdocstrings/python/blob/main/CHANGELOG.md\"\u003emkdocstrings-python's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/python/releases/tag/2.0.3\"\u003e2.0.3\u003c/a\u003e - 2026-02-20\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.2...2.0.3\"\u003eCompare with 2.0.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBuild\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDepend on griffelib instead of griffe (\u003ca href=\"https://github.com/mkdocstrings/python/commit/770a5f69d801f24f0b36d1e671a540196e06f710\"\u003e770a5f6\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/python/releases/tag/2.0.2\"\u003e2.0.2\u003c/a\u003e - 2026-02-09\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.1...2.0.2\"\u003eCompare with 2.0.1\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix aliases for parameters (\u003ca href=\"https://github.com/mkdocstrings/python/commit/0ae77a3454d47e873be38637ea30d043004ee981\"\u003e0ae77a3\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/mkdocstrings/mkdocstrings/issues/813\"\u003eIssue-mkdocstrings-813\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/mkdocstrings/python/commit/a0b99c5ed6ac44b627e2e57375e474e0939ea02e\"\u003e\u003ccode\u003ea0b99c5\u003c/code\u003e\u003c/a\u003e chore: Prepare release 2.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/770a5f69d801f24f0b36d1e671a540196e06f710\"\u003e\u003ccode\u003e770a5f6\u003c/code\u003e\u003c/a\u003e build: Depend on griffelib instead of griffe\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/bf8caaf76efcfe3572b40f4129117ed32bdc2ee7\"\u003e\u003ccode\u003ebf8caaf\u003c/code\u003e\u003c/a\u003e Merge branch 'main' of github.com:mkdocstrings/python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/95f58aa56a78df160fc66892815cb4c49d291044\"\u003e\u003ccode\u003e95f58aa\u003c/code\u003e\u003c/a\u003e ci: Minor lint fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/186d6cfac78dbc96bcb753473ceb68db5fa46f73\"\u003e\u003ccode\u003e186d6cf\u003c/code\u003e\u003c/a\u003e chore: Update sponsors section in README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/4e546b5ddc527c74cfa695890faea404a69b7ee2\"\u003e\u003ccode\u003e4e546b5\u003c/code\u003e\u003c/a\u003e chore: Prepare release 2.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/1781871f96323002a0be145695105a04e3f17f83\"\u003e\u003ccode\u003e1781871\u003c/code\u003e\u003c/a\u003e Merge branch 'main' of github.com:mkdocstrings/python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/0ae77a3454d47e873be38637ea30d043004ee981\"\u003e\u003ccode\u003e0ae77a3\u003c/code\u003e\u003c/a\u003e fix: Fix aliases for parameters\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/5bab7f500db27b95e0eb6a28b2fbb846a0fba146\"\u003e\u003ccode\u003e5bab7f5\u003c/code\u003e\u003c/a\u003e chore: Update sponsors section in README (\u003ca href=\"https://redirect.github.com/mkdocstrings/python/issues/325\"\u003e#325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.1...2.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `zensical` from 0.0.23 to 0.0.24\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/zensical/zensical/releases\"\u003ezensical's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.24\u003c/h2\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis version updates the \u003ca href=\"https://github.com/zensical/ui\"\u003euser interface\u003c/a\u003e to \u003ca href=\"https://github.com/zensical/ui/releases/tag/v0.0.8\"\u003ev0.0.8\u003c/a\u003e, which fixes issues with instant previews for Chinese and other non-ASCII languages, and layout shifts when switching from short to long pages in the modern theme. Additionally, same-page links for when directory URLs are disabled where not resolved correctly, which is fixed as well.\u003c/p\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e1a9d034 \u003cstrong\u003eui\u003c/strong\u003e – update ui to v0.0.8\u003c/li\u003e\n\u003cli\u003e798da33 \u003cstrong\u003ecompat\u003c/strong\u003e – ignore virtual environments in mkdocstrings sources (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e4b1ac98 \u003cstrong\u003ezensical\u003c/strong\u003e – same page links '.' with directory URLs disabled (regression) (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/389\"\u003e#389\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/zensical/zensical/commit/0ca44a6abc88e3ab50d66908aabbe3b35adaa683\"\u003e\u003ccode\u003e0ca44a6\u003c/code\u003e\u003c/a\u003e chore: release v0.0.24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/1a9d0347e7a37b6abc861cf4b1b509db1f9087c9\"\u003e\u003ccode\u003e1a9d034\u003c/code\u003e\u003c/a\u003e fix: update ui to v0.0.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/798da3350a2d63dadc7184f9340d0104f7e654ab\"\u003e\u003ccode\u003e798da33\u003c/code\u003e\u003c/a\u003e fix: ignore virtual environments in mkdocstrings sources (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/4b1ac9855062bf30aa7e075fb0607b3b0c88fc36\"\u003e\u003ccode\u003e4b1ac98\u003c/code\u003e\u003c/a\u003e fix: same page links '.' with directory URLs disabled (regression) (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/389\"\u003e#389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/01b5f8f8ada406ab4afb690d189e03a7d0c1a2f7\"\u003e\u003ccode\u003e01b5f8f\u003c/code\u003e\u003c/a\u003e docs: add note on Zensical Spark to \u003ccode\u003eREADME.md\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/zensical/zensical/compare/v0.0.23...v0.0.24\"\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/sthagen/encode-starlette/pull/112","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sthagen%2Fencode-starlette/issues/112","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/112/packages"}},{"old_version":"0.32.0","new_version":"0.33.0","update_type":"minor","path":null,"pr_created_at":"2026-02-26T20:36:45.000Z","version_change":"0.32.0 → 0.33.0","issue":{"uuid":"3997636472","node_id":"PR_kwDOK8weY87GpsiX","number":478,"state":"closed","title":"deps(pip)(deps): bump the python-minor-patch group across 1 directory with 93 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-04T02:51:11.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-26T20:36:45.000Z","updated_at":"2026-03-04T02:51:13.000Z","time_to_close":454466,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(pip)(deps): bump","group_name":"python-minor-patch","update_count":93,"packages":[{"name":"anthropic","old_version":"0.76.0","new_version":"0.84.0"},{"name":"google-genai","old_version":"1.57.0","new_version":"1.65.0","repository_url":"https://github.com/googleapis/python-genai"},{"name":"huggingface-hub","old_version":"1.4.1","new_version":"1.5.0","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"llama-index","old_version":"0.14.14","new_version":"0.14.15","repository_url":"https://github.com/run-llama/llama_index"},{"name":"llama-index-core","old_version":"0.14.14","new_version":"0.14.15","repository_url":"https://github.com/run-llama/llama_index"},{"name":"llama-index-embeddings-gemini","old_version":"0.4.1","new_version":"0.4.2"},{"name":"llama-index-llms-anthropic","old_version":"0.10.5","new_version":"0.10.10"},{"name":"llama-index-llms-gemini","old_version":"0.6.1","new_version":"0.6.2"},{"name":"llama-index-llms-google-genai","old_version":"0.8.3","new_version":"0.8.7"},{"name":"llama-index-llms-huggingface-api","old_version":"0.6.1","new_version":"0.6.2"},{"name":"llama-index-llms-mistralai","old_version":"0.9.0","new_version":"0.10.0.post2"},{"name":"llama-index-llms-openai","old_version":"0.6.13","new_version":"0.6.21"},{"name":"llama-index-llms-openai-like","old_version":"0.5.3","new_version":"0.6.0"},{"name":"llama-index-readers-file","old_version":"0.5.4","new_version":"0.5.6"},{"name":"llama-index-readers-github","old_version":"0.8.2","new_version":"0.10.0"},{"name":"llama-index-workflows","old_version":"2.12.0","new_version":"2.14.2"},{"name":"mistralai","old_version":"1.10.0","new_version":"1.12.4","repository_url":"https://github.com/mistralai/client-python"},{"name":"onnxruntime","old_version":"1.23.2","new_version":"1.24.2","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"openai","old_version":"2.21.0","new_version":"2.24.0","repository_url":"https://github.com/openai/openai-python"},{"name":"openai-agents","old_version":"0.9.0","new_version":"0.10.2","repository_url":"https://github.com/openai/openai-agents-python"},{"name":"transformers","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/huggingface/transformers"},{"name":"chromadb","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/chroma-core/chroma"},{"name":"faiss-cpu","old_version":"1.8.0.post1","new_version":"1.13.2","repository_url":"https://github.com/kyamagu/faiss-wheels"},{"name":"pandas","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pinecone","old_version":"8.0.0","new_version":"8.1.0","repository_url":"https://github.com/pinecone-io/pinecone-python-client"},{"name":"pinecone-plugin-assistant","old_version":"3.0.1","new_version":"3.0.2"},{"name":"qdrant-client","old_version":"1.16.2","new_version":"1.17.0","repository_url":"https://github.com/qdrant/qdrant-client"},{"name":"weaviate-client","old_version":"4.19.2","new_version":"4.20.1","repository_url":"https://github.com/weaviate/weaviate-python-client"},{"name":"azure-core","old_version":"1.38.0","new_version":"1.38.2","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-identity","old_version":"1.25.1","new_version":"1.25.2","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"boto3","old_version":"1.42.43","new_version":"1.42.57","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.42.43","new_version":"1.42.57","repository_url":"https://github.com/boto/botocore"},{"name":"google-cloud-aiplatform","old_version":"1.133.0","new_version":"1.139.0","repository_url":"https://github.com/googleapis/python-aiplatform"},{"name":"google-cloud-storage","old_version":"3.8.0","new_version":"3.9.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"bandit","old_version":"1.9.2","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"debugpy","old_version":"1.8.19","new_version":"1.8.20","repository_url":"https://github.com/microsoft/debugpy"},{"name":"ipython","old_version":"9.9.0","new_version":"9.10.0","repository_url":"https://github.com/ipython/ipython"},{"name":"pip-tools","old_version":"7.5.2","new_version":"7.5.3","repository_url":"https://github.com/jazzband/pip-tools"},{"name":"rich","old_version":"14.2.0","new_version":"14.3.3","repository_url":"https://github.com/Textualize/rich"},{"name":"ruff","old_version":"0.15.1","new_version":"0.15.4","repository_url":"https://github.com/astral-sh/ruff"},{"name":"uv","old_version":"0.10.2","new_version":"0.10.6","repository_url":"https://github.com/astral-sh/uv"},{"name":"sounddevice","old_version":"0.5.3","new_version":"0.5.5","repository_url":"https://github.com/spatialaudio/python-sounddevice"},{"name":"certifi","old_version":"2026.1.4","new_version":"2026.2.25","repository_url":"https://github.com/certifi/python-certifi"},{"name":"fastapi","old_version":"0.129.0","new_version":"0.133.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"pydantic-settings","old_version":"2.12.0","new_version":"2.13.1","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"banks","old_version":"2.3.0","new_version":"2.4.1","repository_url":"https://github.com/masci/banks"},{"name":"beautifulsoup4","old_version":"4.13.5","new_version":"4.14.3"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"docx2txt","old_version":"0.8","new_version":"0.9","repository_url":"https://github.com/ankushshah89/python-docx2txt"},{"name":"ebooklib","old_version":"0.18","new_version":"0.20","repository_url":"https://github.com/aerkalov/ebooklib"},{"name":"filelock","old_version":"3.20.3","new_version":"3.24.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"firecrawl-py","old_version":"4.14.0","new_version":"4.17.1","repository_url":"https://github.com/firecrawl/firecrawl"},{"name":"gkeepapi","old_version":"0.15.1","new_version":"0.17.1","repository_url":"https://github.com/kiwiz/gkeepapi"},{"name":"google-api-core","old_version":"2.29.0","new_version":"2.30.0"},{"name":"google-api-python-client","old_version":"2.187.0","new_version":"2.190.0","repository_url":"https://github.com/googleapis/google-api-python-client"},{"name":"google-auth-httplib2","old_version":"0.2.1","new_version":"0.3.0","repository_url":"https://github.com/GoogleCloudPlatform/google-auth-library-python-httplib2"},{"name":"greenlet","old_version":"3.3.1","new_version":"3.3.2","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.75.0","new_version":"1.78.0","repository_url":"https://github.com/grpc/grpc"},{"name":"grpcio-status","old_version":"1.71.2","new_version":"1.78.0"},{"name":"httpx-socks","old_version":"0.10.1","new_version":"0.11.0","repository_url":"https://github.com/romis2012/httpx-socks"},{"name":"llama-index-vector-stores-qdrant","old_version":"0.8.8","new_version":"0.9.1"},{"name":"markdown","old_version":"3.10.1","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"ml-dtypes","old_version":"0.4.1","new_version":"0.5.4","repository_url":"https://github.com/jax-ml/ml_dtypes"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/mpmath/mpmath"},{"name":"msal","old_version":"1.34.0","new_version":"1.35.0","repository_url":"https://github.com/AzureAD/microsoft-authentication-library-for-python"},{"name":"opencv-python","old_version":"4.11.0.86","new_version":"4.13.0.92","repository_url":"https://github.com/opencv/opencv-python"},{"name":"parso","old_version":"0.8.5","new_version":"0.8.6","repository_url":"https://github.com/davidhalter/parso"},{"name":"platformdirs","old_version":"4.5.1","new_version":"4.9.2","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pydantic-core","old_version":"2.41.5","new_version":"2.42.0","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pyee","old_version":"13.0.0","new_version":"13.0.1","repository_url":"https://github.com/jfhbrook/pyee"},{"name":"pypdf","old_version":"6.7.2","new_version":"6.7.3","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"pyside6","old_version":"6.9.1","new_version":"6.10.2"},{"name":"pyside6-addons","old_version":"6.9.1","new_version":"6.10.2"},{"name":"pyside6-essentials","old_version":"6.9.1","new_version":"6.10.2"},{"name":"python-markdown-math","old_version":"0.8","new_version":"0.9","repository_url":"https://github.com/mitya57/python-markdown-math"},{"name":"python-socks","old_version":"2.8.0","new_version":"2.8.1","repository_url":"https://github.com/romis2012/python-socks"},{"name":"qasync","old_version":"0.27.1","new_version":"0.28.0","repository_url":"https://github.com/CabbageDevelopment/qasync"},{"name":"redisvl","old_version":"0.4.1","new_version":"0.14.0","repository_url":"https://github.com/redis/redis-vl-python"},{"name":"regex","old_version":"2026.1.15","new_version":"2026.2.19","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"selenium","old_version":"4.39.0","new_version":"4.41.0","repository_url":"https://github.com/SeleniumHQ/Selenium"},{"name":"shiboken6","old_version":"6.9.1","new_version":"6.10.2"},{"name":"show-in-file-manager","old_version":"1.1.5","new_version":"1.1.6","repository_url":"https://github.com/damonlynch/showinfilemanager"},{"name":"spider-client","old_version":"0.0.27","new_version":"0.1.85","repository_url":"https://github.com/spider-rs/spider-clients"},{"name":"sqlalchemy","old_version":"2.0.43","new_version":"2.0.47"},{"name":"striprtf","old_version":"0.0.26","new_version":"0.0.29","repository_url":"https://github.com/joshy/striprtf"},{"name":"tenacity","old_version":"9.1.3","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"tinycss2","old_version":"1.4.0","new_version":"1.5.1","repository_url":"https://github.com/Kozea/tinycss2"},{"name":"tinysegmenter","old_version":"0.3","new_version":"0.4"},{"name":"trio","old_version":"0.32.0","new_version":"0.33.0","repository_url":"https://github.com/python-trio/trio"},{"name":"typer","old_version":"0.21.1","new_version":"0.24.1","repository_url":"https://github.com/fastapi/typer"},{"name":"urllib3","old_version":"2.5.0","new_version":"2.6.3"},{"name":"wcwidth","old_version":"0.5.3","new_version":"0.6.0","repository_url":"https://github.com/jquast/wcwidth"},{"name":"xai-sdk","old_version":"1.6.1","new_version":"1.7.0","repository_url":"https://github.com/xai-org/xai-sdk-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 93 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anthropic[bedrock,vertex]](https://github.com/anthropics/anthropic-sdk-python) | `0.76.0` | `0.84.0` |\n| [google-genai](https://github.com/googleapis/python-genai) | `1.57.0` | `1.65.0` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `1.4.1` | `1.5.0` |\n| [llama-index](https://github.com/run-llama/llama_index) | `0.14.14` | `0.14.15` |\n| [llama-index-core](https://github.com/run-llama/llama_index) | `0.14.14` | `0.14.15` |\n| llama-index-embeddings-gemini | `0.4.1` | `0.4.2` |\n| llama-index-llms-anthropic | `0.10.5` | `0.10.10` |\n| llama-index-llms-gemini | `0.6.1` | `0.6.2` |\n| llama-index-llms-google-genai | `0.8.3` | `0.8.7` |\n| llama-index-llms-huggingface-api | `0.6.1` | `0.6.2` |\n| llama-index-llms-mistralai | `0.9.0` | `0.10.0.post2` |\n| llama-index-llms-openai | `0.6.13` | `0.6.21` |\n| llama-index-llms-openai-like | `0.5.3` | `0.6.0` |\n| llama-index-readers-file | `0.5.4` | `0.5.6` |\n| llama-index-readers-github | `0.8.2` | `0.10.0` |\n| llama-index-workflows | `2.12.0` | `2.14.2` |\n| [mistralai](https://github.com/mistralai/client-python) | `1.10.0` | `1.12.4` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.23.2` | `1.24.2` |\n| [openai](https://github.com/openai/openai-python) | `2.21.0` | `2.24.0` |\n| [openai-agents](https://github.com/openai/openai-agents-python) | `0.9.0` | `0.10.2` |\n| [transformers](https://github.com/huggingface/transformers) | `5.1.0` | `5.2.0` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.5.0` | `1.5.1` |\n| [faiss-cpu](https://github.com/kyamagu/faiss-wheels) | `1.8.0.post1` | `1.13.2` |\n| [pandas](https://github.com/pandas-dev/pandas) | `3.0.0` | `3.0.1` |\n| [pinecone](https://github.com/pinecone-io/pinecone-python-client) | `8.0.0` | `8.1.0` |\n| [pinecone-plugin-assistant](https://www.pinecone.io) | `3.0.1` | `3.0.2` |\n| [qdrant-client](https://github.com/qdrant/qdrant-client) | `1.16.2` | `1.17.0` |\n| [weaviate-client](https://github.com/weaviate/weaviate-python-client) | `4.19.2` | `4.20.1` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.38.2` |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.25.1` | `1.25.2` |\n| [boto3](https://github.com/boto/boto3) | `1.42.43` | `1.42.57` |\n| [botocore](https://github.com/boto/botocore) | `1.42.43` | `1.42.57` |\n| [google-cloud-aiplatform](https://github.com/googleapis/python-aiplatform) | `1.133.0` | `1.139.0` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.8.0` | `3.9.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.19` | `1.8.20` |\n| [ipython](https://github.com/ipython/ipython) | `9.9.0` | `9.10.0` |\n| [pip-tools](https://github.com/jazzband/pip-tools) | `7.5.2` | `7.5.3` |\n| [rich](https://github.com/Textualize/rich) | `14.2.0` | `14.3.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.1` | `0.15.4` |\n| [uv](https://github.com/astral-sh/uv) | `0.10.2` | `0.10.6` |\n| [sounddevice](https://github.com/spatialaudio/python-sounddevice) | `0.5.3` | `0.5.5` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.1.4` | `2026.2.25` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.129.0` | `0.133.1` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.12.0` | `2.13.1` |\n| [banks](https://github.com/masci/banks) | `2.3.0` | `2.4.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.5` | `4.14.3` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [docx2txt](https://github.com/ankushshah89/python-docx2txt) | `0.8` | `0.9` |\n| [ebooklib](https://github.com/aerkalov/ebooklib) | `0.18` | `0.20` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.3` | `3.24.3` |\n| [firecrawl-py](https://github.com/firecrawl/firecrawl) | `4.14.0` | `4.17.1` |\n| [gkeepapi](https://github.com/kiwiz/gkeepapi) | `0.15.1` | `0.17.1` |\n| [google-api-core[grpc]](https://github.com/googleapis/google-cloud-python) | `2.29.0` | `2.30.0` |\n| [google-api-python-client](https://github.com/googleapis/google-api-python-client) | `2.187.0` | `2.190.0` |\n| [google-auth-httplib2](https://github.com/GoogleCloudPlatform/google-auth-library-python-httplib2) | `0.2.1` | `0.3.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.1` | `3.3.2` |\n| [grpcio](https://github.com/grpc/grpc) | `1.75.0` | `1.78.0` |\n| [grpcio-status](https://grpc.io) | `1.71.2` | `1.78.0` |\n| [httpx-socks](https://github.com/romis2012/httpx-socks) | `0.10.1` | `0.11.0` |\n| llama-index-vector-stores-qdrant | `0.8.8` | `0.9.1` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.10.1` | `3.10.2` |\n| [ml-dtypes](https://github.com/jax-ml/ml_dtypes) | `0.4.1` | `0.5.4` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.0` |\n| [msal](https://github.com/AzureAD/microsoft-authentication-library-for-python) | `1.34.0` | `1.35.0` |\n| [opencv-python](https://github.com/opencv/opencv-python) | `4.11.0.86` | `4.13.0.92` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.5` | `0.8.6` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.5.1` | `4.9.2` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.41.5` | `2.42.0` |\n| [pyee](https://github.com/jfhbrook/pyee) | `13.0.0` | `13.0.1` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.7.2` | `6.7.3` |\n| [pyside6](https://pyside.org) | `6.9.1` | `6.10.2` |\n| [pyside6-addons](https://pyside.org) | `6.9.1` | `6.10.2` |\n| [pyside6-essentials](https://pyside.org) | `6.9.1` | `6.10.2` |\n| [python-markdown-math](https://github.com/mitya57/python-markdown-math) | `0.8` | `0.9` |\n| [python-socks](https://github.com/romis2012/python-socks) | `2.8.0` | `2.8.1` |\n| [qasync](https://github.com/CabbageDevelopment/qasync) | `0.27.1` | `0.28.0` |\n| [redisvl](https://github.com/redis/redis-vl-python) | `0.4.1` | `0.14.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.1.15` | `2026.2.19` |\n| [selenium](https://github.com/SeleniumHQ/Selenium) | `4.39.0` | `4.41.0` |\n| [shiboken6](https://pyside.org) | `6.9.1` | `6.10.2` |\n| [show-in-file-manager](https://github.com/damonlynch/showinfilemanager) | `1.1.5` | `1.1.6` |\n| [spider-client](https://github.com/spider-rs/spider-clients) | `0.0.27` | `0.1.85` |\n| [sqlalchemy[asyncio]](https://github.com/sqlalchemy/sqlalchemy) | `2.0.43` | `2.0.47` |\n| [striprtf](https://github.com/joshy/striprtf) | `0.0.26` | `0.0.29` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.3` | `9.1.4` |\n| [tinycss2](https://github.com/Kozea/tinycss2) | `1.4.0` | `1.5.1` |\n| [tinysegmenter](http://tinysegmenter.tuxfamily.org/) | `0.3` | `0.4` |\n| [trio](https://github.com/python-trio/trio) | `0.32.0` | `0.33.0` |\n| [typer](https://github.com/fastapi/typer) | `0.21.1` | `0.24.1` |\n| [urllib3[socks]](https://github.com/urllib3/urllib3) | `2.5.0` | `2.6.3` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.5.3` | `0.6.0` |\n| [xai-sdk](https://github.com/xai-org/xai-sdk-python) | `1.6.1` | `1.7.0` |\n\n\nUpdates `anthropic[bedrock,vertex]` from 0.76.0 to 0.84.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/releases\"\u003eanthropic[bedrock,vertex]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.84.0\u003c/h2\u003e\n\u003ch2\u003e0.84.0 (2026-02-25)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.83.0...v0.84.0\"\u003ev0.83.0...v0.84.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e change array_format to brackets (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/925d2ad6b76ad7c15de07b9b2768738775f71631\"\u003e925d2ad\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e remove publishing section from cli target (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/7bc7cebc68db70f08fce23e7e0b24acbc9ff37a7\"\u003e7bc7ceb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ehelpers:\u003c/strong\u003e add conversion helpers for MCP tools, prompts, and resources (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1383\"\u003e#1383\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/9489751386d1540bf80eff63ab47ca2b3cc18fa1\"\u003e9489751\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing raw jsonl results method (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/1009d4aca8be42973ca39104bc9bd8087f51ff9c\"\u003e1009d4a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e add request options to SSE classes (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4f4bc8e6241c2ccee8dfe4cdbc522081e3e30f08\"\u003e4f4bc8e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f7056e09411a45798a678be5766a7b7d6dcbc7a9\"\u003ef7056e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient to env (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/143efccfcc20c12f920b6ba242eff7c0feeea7c4\"\u003e143efcc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e simplify http snapshots (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1092\"\u003e#1092\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4a4dc9f6b36ab0224095790f4311c7f60c9845f7\"\u003e4a4dc9f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e update jsonl tests (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a8e6a6e5544b9f1626e3fb5faa31a1accfc81441\"\u003ea8e6a6e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erebrand to Claude SDK and streamline README (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/6b544058ab19e55e1c76a4ba9816205d1eedc630\"\u003e6b54405\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.83.0\u003c/h2\u003e\n\u003ch2\u003e0.83.0 (2026-02-19)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.82.0...v0.83.0\"\u003ev0.82.0...v0.83.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Add top-level cache control (automatic caching) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a940123da34ac33f0b6f20ce91807829451d1233\"\u003ea940123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate mock server docs (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/34ef48ceb0f1734d6b695890f689dc42eb0b004e\"\u003e34ef48c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.82.0\u003c/h2\u003e\n\u003ch2\u003e0.82.0 (2026-02-18)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.81.0...v0.82.0\"\u003ev0.81.0...v0.82.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e fix shared UserLocation and error code types (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/da3b931a2be768d77c228a4804d2f7f75caeb71c\"\u003eda3b931\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/anthropics/anthropic-sdk-python/blob/main/CHANGELOG.md\"\u003eanthropic[bedrock,vertex]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.84.0 (2026-02-25)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.83.0...v0.84.0\"\u003ev0.83.0...v0.84.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e change array_format to brackets (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/925d2ad6b76ad7c15de07b9b2768738775f71631\"\u003e925d2ad\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e remove publishing section from cli target (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/7bc7cebc68db70f08fce23e7e0b24acbc9ff37a7\"\u003e7bc7ceb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ehelpers:\u003c/strong\u003e add conversion helpers for MCP tools, prompts, and resources (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1383\"\u003e#1383\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/9489751386d1540bf80eff63ab47ca2b3cc18fa1\"\u003e9489751\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing raw jsonl results method (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/1009d4aca8be42973ca39104bc9bd8087f51ff9c\"\u003e1009d4a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e add request options to SSE classes (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4f4bc8e6241c2ccee8dfe4cdbc522081e3e30f08\"\u003e4f4bc8e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f7056e09411a45798a678be5766a7b7d6dcbc7a9\"\u003ef7056e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient to env (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/143efccfcc20c12f920b6ba242eff7c0feeea7c4\"\u003e143efcc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e simplify http snapshots (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1092\"\u003e#1092\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4a4dc9f6b36ab0224095790f4311c7f60c9845f7\"\u003e4a4dc9f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e update jsonl tests (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a8e6a6e5544b9f1626e3fb5faa31a1accfc81441\"\u003ea8e6a6e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erebrand to Claude SDK and streamline README (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/6b544058ab19e55e1c76a4ba9816205d1eedc630\"\u003e6b54405\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.83.0 (2026-02-19)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.82.0...v0.83.0\"\u003ev0.82.0...v0.83.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Add top-level cache control (automatic caching) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a940123da34ac33f0b6f20ce91807829451d1233\"\u003ea940123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate mock server docs (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/34ef48ceb0f1734d6b695890f689dc42eb0b004e\"\u003e34ef48c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.82.0 (2026-02-18)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.81.0...v0.82.0\"\u003ev0.81.0...v0.82.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e fix shared UserLocation and error code types (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/da3b931a2be768d77c228a4804d2f7f75caeb71c\"\u003eda3b931\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd backward-compat aliases for removed nested UserLocation classes (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1409\"\u003e#1409\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/56db1e3db6108e1c0f4e9363a5f23b54976dc877\"\u003e56db1e3\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/anthropics/anthropic-sdk-python/commit/49d639a671cb0ac30c767e8e1e68fdd5925205d5\"\u003e\u003ccode\u003e49d639a\u003c/code\u003e\u003c/a\u003e release: 0.84.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4d73b2159f7f3e88113a904f785de58ec4157045\"\u003e\u003ccode\u003e4d73b21\u003c/code\u003e\u003c/a\u003e feat(helpers): add conversion helpers for MCP tools, prompts, and resources (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/0e4092173fc52d773675f8e3a4ced6a5e2f67c9f\"\u003e\u003ccode\u003e0e40921\u003c/code\u003e\u003c/a\u003e docs: rebrand to Claude SDK and streamline README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/c3017a227c67377b862644feb463c0d8a1e9ddc9\"\u003e\u003ccode\u003ec3017a2\u003c/code\u003e\u003c/a\u003e chore(internal): simplify http snapshots (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1092\"\u003e#1092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/470fda9c14714117342c0491d6e436d158bbb4ab\"\u003e\u003ccode\u003e470fda9\u003c/code\u003e\u003c/a\u003e chore(internal): make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient to env\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/c30c72d710dea90437a73713296e76c12518c359\"\u003e\u003ccode\u003ec30c72d\u003c/code\u003e\u003c/a\u003e chore: add missing raw jsonl results method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/9d9a5a1aab3aa67c665c39bbeed3fec298fc2e6a\"\u003e\u003ccode\u003e9d9a5a1\u003c/code\u003e\u003c/a\u003e chore(internal):  make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/c28d2d50a5f5197839c36fb4741bee8cd1e976c1\"\u003e\u003ccode\u003ec28d2d5\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/bb13f1ea6be3941342115fdb125e3fe225252071\"\u003e\u003ccode\u003ebb13f1e\u003c/code\u003e\u003c/a\u003e chore(internal): add request options to SSE classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/ab0ccb990d098ef56c0367abcb0c745d7a58a99e\"\u003e\u003ccode\u003eab0ccb9\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.76.0...v0.84.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-genai` from 1.57.0 to 1.65.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-genai/releases\"\u003egoogle-genai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.65.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v1.64.0...v1.65.0\"\u003e1.65.0\u003c/a\u003e (2026-02-26)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd gemini-3.1-pro-preview to list of models in Interactions (\u003ca href=\"https://github.com/googleapis/python-genai/commit/fe86870752ca8cc66d140d3942e9b07f19ca092c\"\u003efe86870\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Image Grounding support to GoogleSearch tool (\u003ca href=\"https://github.com/googleapis/python-genai/commit/0035182ec4eaf1ce2503a09f290b1e48a2e1ee1f\"\u003e0035182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnable server side MCP and disable all other AFC when server side MCP is configured. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/4dd7b165dc54d3ae75367f68d05f9d9951688f54\"\u003e4dd7b16\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport more image sizes and resolutions (\u003ca href=\"https://github.com/googleapis/python-genai/commit/8b2a4e04707c86e5f7d46e0483a88457fbf6d533\"\u003e8b2a4e0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eChange interactions media mime type to enum (breaking change for experimental feature) (\u003ca href=\"https://github.com/googleapis/python-genai/commit/e0f33786f76a1af6ac3ad1938ab57961833bf0a1\"\u003ee0f3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle non-list response_stream in HttpResponse.json property (\u003ca href=\"https://github.com/googleapis/python-genai/commit/006042db8379d957ac1ac0e57993983a21f7e1d1\"\u003e006042d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle non-list response_stream in HttpResponse.json property (\u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/1903\"\u003e#1903\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-genai/commit/61aec3455e886a1c700fb0ba21ed40f59bba65ff\"\u003e61aec34\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake aiohttp an optional dependency, bump aiohttp version upperbound, and ensure HttpOptions.async_client_args propagates to custom aiohttp.ClientSession request args for proxy etc. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/b28d1445bb6c2c46c495ffd1b03a622d9d6942f6\"\u003eb28d144\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/2090\"\u003e#2090\u003c/a\u003e \u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/2051\"\u003e#2051\u003c/a\u003e \u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/1950\"\u003e#1950\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegenerate docs for 1.64.0 (\u003ca href=\"https://github.com/googleapis/python-genai/commit/a02314197d0dc72e854fa3ea79247f53421511ba\"\u003ea023141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate README and codegen_instructions for structured outputs (\u003ca href=\"https://github.com/googleapis/python-genai/commit/4d5a978932e9aacd2569f3058ce5af527ae18210\"\u003e4d5a978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.64.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v1.63.0...v1.64.0\"\u003e1.64.0\u003c/a\u003e (2026-02-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd UnifiedMetric support to Vertex Tuning evaluation config (\u003ca href=\"https://github.com/googleapis/python-genai/commit/9a9908a9605756a94404359187cad09b21c094e0\"\u003e9a9908a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport multimodal embedding for Gemini Embedding 2.0 and support MaaS models in Models.embed_content() (Vertex AI API) (\u003ca href=\"https://github.com/googleapis/python-genai/commit/af40cc629751b2d389eecb75741e9c3531cc8e6e\"\u003eaf40cc6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.63.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v1.62.0...v1.63.0\"\u003e1.63.0\u003c/a\u003e (2026-02-11)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd INCOMPLETE status to Interaction. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/1a84605bcac5445c8e13658b8bd7ff1860f10f1b\"\u003e1a84605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport encryption_spec in tuning job creation configuration for GenAI SDK (\u003ca href=\"https://github.com/googleapis/python-genai/commit/057d6f077b0a6d13c843fff0479027f5f7369113\"\u003e057d6f0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBase_url and global location parsing (\u003ca href=\"https://github.com/googleapis/python-genai/commit/2c40555c54267b1e9ba10dfafe1bc73f0cca43d4\"\u003e2c40555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove build warning due to extra comma: assertion on a tuple is always true (\u003ca href=\"https://github.com/googleapis/python-genai/commit/1cc2c2d411576e9858d4a4ae33bbf12975700a9f\"\u003e1cc2c2d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove debug print statement. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/60c0a2ffb4c1e87374c02958b1cb42748ba84ff1\"\u003e60c0a2f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unused import of \u003ccode\u003ewebsockets\u003c/code\u003e (\u003ca href=\"https://github.com/googleapis/python-genai/commit/3b82b5f382c6fe9fa820a59c3938d04cef3ae24e\"\u003e3b82b5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-genai/blob/main/CHANGELOG.md\"\u003egoogle-genai's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v1.64.0...v1.65.0\"\u003e1.65.0\u003c/a\u003e (2026-02-26)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd gemini-3.1-pro-preview to list of models in Interactions (\u003ca href=\"https://github.com/googleapis/python-genai/commit/fe86870752ca8cc66d140d3942e9b07f19ca092c\"\u003efe86870\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Image Grounding support to GoogleSearch tool (\u003ca href=\"https://github.com/googleapis/python-genai/commit/0035182ec4eaf1ce2503a09f290b1e48a2e1ee1f\"\u003e0035182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnable server side MCP and disable all other AFC when server side MCP is configured. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/4dd7b165dc54d3ae75367f68d05f9d9951688f54\"\u003e4dd7b16\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport more image sizes and resolutions (\u003ca href=\"https://github.com/googleapis/python-genai/commit/8b2a4e04707c86e5f7d46e0483a88457fbf6d533\"\u003e8b2a4e0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eChange interactions media mime type to enum (breaking change for experimental feature) (\u003ca href=\"https://github.com/googleapis/python-genai/commit/e0f33786f76a1af6ac3ad1938ab57961833bf0a1\"\u003ee0f3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle non-list response_stream in HttpResponse.json property (\u003ca href=\"https://github.com/googleapis/python-genai/commit/006042db8379d957ac1ac0e57993983a21f7e1d1\"\u003e006042d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle non-list response_stream in HttpResponse.json property (\u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/1903\"\u003e#1903\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-genai/commit/61aec3455e886a1c700fb0ba21ed40f59bba65ff\"\u003e61aec34\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake aiohttp an optional dependency, bump aiohttp version upperbound, and ensure HttpOptions.async_client_args propagates to custom aiohttp.ClientSession request args for proxy etc. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/b28d1445bb6c2c46c495ffd1b03a622d9d6942f6\"\u003eb28d144\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/2090\"\u003e#2090\u003c/a\u003e \u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/2051\"\u003e#2051\u003c/a\u003e \u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/1950\"\u003e#1950\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegenerate docs for 1.64.0 (\u003ca href=\"https://github.com/googleapis/python-genai/commit/a02314197d0dc72e854fa3ea79247f53421511ba\"\u003ea023141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate README and codegen_instructions for structured outputs (\u003ca href=\"https://github.com/googleapis/python-genai/commit/4d5a978932e9aacd2569f3058ce5af527ae18210\"\u003e4d5a978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v1.63.0...v1.64.0\"\u003e1.64.0\u003c/a\u003e (2026-02-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd UnifiedMetric support to Vertex Tuning evaluation config (\u003ca href=\"https://github.com/googleapis/python-genai/commit/9a9908a9605756a94404359187cad09b21c094e0\"\u003e9a9908a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport multimodal embedding for Gemini Embedding 2.0 and support MaaS models in Models.embed_content() (Vertex AI API) (\u003ca href=\"https://github.com/googleapis/python-genai/commit/af40cc629751b2d389eecb75741e9c3531cc8e6e\"\u003eaf40cc6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v1.62.0...v1.63.0\"\u003e1.63.0\u003c/a\u003e (2026-02-11)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd INCOMPLETE status to Interaction. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/1a84605bcac5445c8e13658b8bd7ff1860f10f1b\"\u003e1a84605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport encryption_spec in tuning job creation configuration for GenAI SDK (\u003ca href=\"https://github.com/googleapis/python-genai/commit/057d6f077b0a6d13c843fff0479027f5f7369113\"\u003e057d6f0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBase_url and global location parsing (\u003ca href=\"https://github.com/googleapis/python-genai/commit/2c40555c54267b1e9ba10dfafe1bc73f0cca43d4\"\u003e2c40555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove build warning due to extra comma: assertion on a tuple is always true (\u003ca href=\"https://github.com/googleapis/python-genai/commit/1cc2c2d411576e9858d4a4ae33bbf12975700a9f\"\u003e1cc2c2d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove debug print statement. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/60c0a2ffb4c1e87374c02958b1cb42748ba84ff1\"\u003e60c0a2f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unused import of \u003ccode\u003ewebsockets\u003c/code\u003e (\u003ca href=\"https://github.com/googleapis/python-genai/commit/3b82b5f382c6fe9fa820a59c3938d04cef3ae24e\"\u003e3b82b5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/b2be5018adce18598badacfbbe7a4c0139be3a16\"\u003e\u003ccode\u003eb2be501\u003c/code\u003e\u003c/a\u003e chore(main): release 1.65.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/2075\"\u003e#2075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/7028a9c691439b559de1b75ab2717f522c8f4e24\"\u003e\u003ccode\u003e7028a9c\u003c/code\u003e\u003c/a\u003e chore: update InteractionCompleteEvent comment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/0035182ec4eaf1ce2503a09f290b1e48a2e1ee1f\"\u003e\u003ccode\u003e0035182\u003c/code\u003e\u003c/a\u003e feat: Add Image Grounding support to GoogleSearch tool\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/8b2a4e04707c86e5f7d46e0483a88457fbf6d533\"\u003e\u003ccode\u003e8b2a4e0\u003c/code\u003e\u003c/a\u003e feat: Support more image sizes and resolutions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/b28d1445bb6c2c46c495ffd1b03a622d9d6942f6\"\u003e\u003ccode\u003eb28d144\u003c/code\u003e\u003c/a\u003e fix: Make aiohttp an optional dependency, bump aiohttp version upperbound, an...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/c04c4891f7d54cdedc525bf4f42f29fb1a4eae1b\"\u003e\u003ccode\u003ec04c489\u003c/code\u003e\u003c/a\u003e chore: Improve error message for missing API key.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/af94e536ab606d1795ad90e0c8eeb9c2a850ce6b\"\u003e\u003ccode\u003eaf94e53\u003c/code\u003e\u003c/a\u003e chore: Update comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/006042db8379d957ac1ac0e57993983a21f7e1d1\"\u003e\u003ccode\u003e006042d\u003c/code\u003e\u003c/a\u003e Copybara import of the project:\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/ecfa90cab3cf76357996048aa9928bf8055030bf\"\u003e\u003ccode\u003eecfa90c\u003c/code\u003e\u003c/a\u003e chore: internal change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/61aec3455e886a1c700fb0ba21ed40f59bba65ff\"\u003e\u003ccode\u003e61aec34\u003c/code\u003e\u003c/a\u003e fix: handle non-list response_stream in HttpResponse.json property (\u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/1903\"\u003e#1903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-genai/compare/v1.57.0...v1.65.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `huggingface-hub` from 1.4.1 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/huggingface_hub/releases\"\u003ehuggingface-hub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[v1.5.0]: Buckets API, Agent-first CLI, Spaces Hot-Reload and more\u003c/h2\u003e\n\u003cp\u003eThis release introduces major new features including \u003cstrong\u003eBuckets\u003c/strong\u003e (xet-based large scale object storage), CLI Extensions, Space Hot-Reload, and significant improvements for AI coding agents. The CLI has been completely overhauled with centralized error handling, better help output, and new commands for collections, papers, and more.\u003c/p\u003e\n\u003ch2\u003e🪣 Buckets: S3-like Object Storage on the Hub\u003c/h2\u003e\n\u003cp\u003eBuckets provide S3-like object storage on Hugging Face, powered by the Xet storage backend. Unlike repositories (which are git-based and track file history), buckets are remote object storage containers designed for large-scale files with content-addressable deduplication. Use them for training checkpoints, logs, intermediate artifacts, or any large collection of files that doesn't need version control.\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003e# Create a bucket\r\nhf buckets create my-bucket --private\r\n\u003ch1\u003eUpload a directory\u003c/h1\u003e\n\u003cp\u003ehf buckets sync ./data hf://buckets/username/my-bucket\u003c/p\u003e\n\u003ch1\u003eDownload from bucket\u003c/h1\u003e\n\u003cp\u003ehf buckets sync hf://buckets/username/my-bucket ./data\u003c/p\u003e\n\u003ch1\u003eList files\u003c/h1\u003e\n\u003cp\u003ehf buckets list username/my-bucket -R --tree\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eThe Buckets API includes full CLI and Python support for creating, listing, moving, and deleting buckets; uploading, downloading, and syncing files; and managing bucket contents with include/exclude patterns.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBuckets API and CLI by \u003ca href=\"https://github.com/Wauplin\"\u003e\u003ccode\u003e@​Wauplin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3673\"\u003e#3673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport bucket rename/move in API + CLI by \u003ca href=\"https://github.com/Wauplin\"\u003e\u003ccode\u003e@​Wauplin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3843\"\u003e#3843\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd 'sync_bucket' to HfApi by \u003ca href=\"https://github.com/Wauplin\"\u003e\u003ccode\u003e@​Wauplin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3845\"\u003e#3845\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ehf buckets file deletion by \u003ca href=\"https://github.com/Wauplin\"\u003e\u003ccode\u003e@​Wauplin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3849\"\u003e#3849\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate message when no buckets found by \u003ca href=\"https://github.com/Wauplin\"\u003e\u003ccode\u003e@​Wauplin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3850\"\u003e#3850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuckets doc \u003ccode\u003ehf\u003c/code\u003e install by \u003ca href=\"https://github.com/julien-c\"\u003e\u003ccode\u003e@​julien-c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3846\"\u003e#3846\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e📚 \u003cstrong\u003eDocumentation:\u003c/strong\u003e \u003ca href=\"https://huggingface.co/docs/huggingface_hub/main/en/guides/buckets\"\u003eBuckets guide\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e🤖 AI Agent Support\u003c/h2\u003e\n\u003cp\u003eThis release includes several features designed to improve the experience for AI coding agents (Claude Code, OpenCode, Cursor, etc.):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCentralized CLI error handling\u003c/strong\u003e: Clean user-facing messages without tracebacks (set \u003ccode\u003eHF_DEBUG=1\u003c/code\u003e for full traces) by \u003ca href=\"https://github.com/hanouticelina\"\u003e\u003ccode\u003e@​hanouticelina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3754\"\u003e#3754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eToken-efficient skill\u003c/strong\u003e: The \u003ccode\u003ehf skills add\u003c/code\u003e command now installs a compact skill (~1.2k tokens vs ~12k before) by \u003ca href=\"https://github.com/hanouticelina\"\u003e\u003ccode\u003e@​hanouticelina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3802\"\u003e#3802\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAgent-friendly \u003ccode\u003ehf jobs logs\u003c/code\u003e\u003c/strong\u003e: Prints available logs and exits by default; use \u003ccode\u003e-f\u003c/code\u003e to stream by \u003ca href=\"https://github.com/davanstrien\"\u003e\u003ccode\u003e@​davanstrien\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3783\"\u003e#3783\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAdd AGENTS.md\u003c/strong\u003e: Dev setup and codebase guide for AI agents by \u003ca href=\"https://github.com/Wauplin\"\u003e\u003ccode\u003e@​Wauplin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3789\"\u003e#3789\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003e# Install the hf-cli skill for Claude\r\nhf skills add --claude\r\n\u003ch1\u003eInstall for project-level\u003c/h1\u003e\n\u003cp\u003ehf skills add --project\n\u003c/code\u003e\u003c/pre\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/huggingface/huggingface_hub/commit/2b2072642d8e021ecbd119f2489a54f6709f8b16\"\u003e\u003ccode\u003e2b20726\u003c/code\u003e\u003c/a\u003e Release: v1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/da368798cbd07a9e56f64689c3e998e95100d66c\"\u003e\u003ccode\u003eda36879\u003c/code\u003e\u003c/a\u003e Remove bucket warning in docs (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3854\"\u003e#3854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/ee2dd7f5f547c4ee4752a99c8f7cb361857713f6\"\u003e\u003ccode\u003eee2dd7f\u003c/code\u003e\u003c/a\u003e Release: v1.5.0.rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/a5284dcb226a85491ba4cc9e5a99484322afcaca\"\u003e\u003ccode\u003ea5284dc\u003c/code\u003e\u003c/a\u003e Add test for check if dataclass.repr=True before wrapping (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3852\"\u003e#3852\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/b89a805d2a2e2e1d381a0b4322374caefa168a8b\"\u003e\u003ccode\u003eb89a805\u003c/code\u003e\u003c/a\u003e check if \u003ccode\u003erepr=True\u003c/code\u003e before wrapping (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3823\"\u003e#3823\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/2656107690782d2a9af4b6f5435f86c16f4e504c\"\u003e\u003ccode\u003e2656107\u003c/code\u003e\u003c/a\u003e Hf buckets file deletion (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3849\"\u003e#3849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/f100f04062fa5f3a80160a8b01f5220451b21d8a\"\u003e\u003ccode\u003ef100f04\u003c/code\u003e\u003c/a\u003e Buckets list empty message (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3850\"\u003e#3850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/41896bbd384e88e89e1f56253be9c4d3a553fb47\"\u003e\u003ccode\u003e41896bb\u003c/code\u003e\u003c/a\u003e [CLI] Migrate to 'hf repos' instead of 'hf repo' for consistency (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3848\"\u003e#3848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/25a3bbe2ef9b5611080a0a5ae5b31b50cd0027e0\"\u003e\u003ccode\u003e25a3bbe\u003c/code\u003e\u003c/a\u003e [Bucket] Add 'sync_bucket' to HfApi (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3845\"\u003e#3845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/2f1229897bf74b17e1af82503c7b4919a8366aef\"\u003e\u003ccode\u003e2f12298\u003c/code\u003e\u003c/a\u003e [Bucket] Support bucket rename/move in API + CLI (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/3843\"\u003e#3843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/huggingface_hub/compare/v1.4.1...v1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index` from 0.14.14 to 0.14.15\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/releases\"\u003ellama-index's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.15\u003c/h2\u003e\n\u003ch1\u003eRelease Notes\u003c/h1\u003e\n\u003ch2\u003e[2026-02-18]\u003c/h2\u003e\n\u003ch3\u003ellama-index-agent-agentmesh [0.1.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[Integration] AgentMesh: Trust Layer for LlamaIndex Agents (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20644\"\u003e#20644\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-core [0.14.15]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport basic operations for multimodal types (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20640\"\u003e#20640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat recursive llm type support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20642\"\u003e#20642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: remove redundant metadata_seperator field from TextNode (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20649\"\u003e#20649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): update mock prompt type in mock_prompts.py (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20661\"\u003e#20661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal template var formatting (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20682\"\u003e#20682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal prompt templates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20683\"\u003e#20683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal chat prompt helper (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20684\"\u003e#20684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eensure at least one message/content block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-ibm [0.6.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.9]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSonnet 4-6 addition (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20723\"\u003e#20723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.12.10]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(bedrock-converse): ensure thinking_delta is populated in all chat modes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20664\"\u003e#20664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(bedrock-converse): Add support for Claude Sonnet 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20726\"\u003e#20726\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-ibm [0.7.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-mistralai [0.10.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRrubini/mistral azure sdk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20668\"\u003e#20668\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-oci-data-science [1.0.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for new OCI DataScience endpoint /predictWithStream for streaming use case (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20545\"\u003e#20545\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-observability-otel [0.3.0]\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/run-llama/llama_index/blob/main/CHANGELOG.md\"\u003ellama-index's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003ellama-index-core [0.14.15]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport basic operations for multimodal types (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20640\"\u003e#20640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat recursive llm type support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20642\"\u003e#20642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: remove redundant metadata_seperator field from TextNode (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20649\"\u003e#20649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): update mock prompt type in mock_prompts.py (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20661\"\u003e#20661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal template var formatting (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20682\"\u003e#20682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal prompt templates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20683\"\u003e#20683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal chat prompt helper (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20684\"\u003e#20684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eensure at least one message/content block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-ibm [0.6.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.9]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSonnet 4-6 addition (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20723\"\u003e#20723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.12.10]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(bedrock-converse): ensure thinking_delta is populated in all chat modes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20664\"\u003e#20664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(bedrock-converse): Add support for Claude Sonnet 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20726\"\u003e#20726\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-ibm [0.7.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-mistralai [0.10.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRrubini/mistral azure sdk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20668\"\u003e#20668\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-oci-data-science [1.0.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for new OCI DataScience endpoint /predictWithStream for streaming use case (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20545\"\u003e#20545\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-observability-otel [0.3.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eimprove otel data serialization by flattening dicts (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20719\"\u003e#20719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: support custom span processor; refactor: use llama-index-instrumentation instead of llama-index-core (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20732\"\u003e#20732\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-program-evaporate [0.5.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSandbox LLM-generated code execution in EvaporateExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20676\"\u003e#20676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-readers-bitbucket [0.4.2]\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/4937fc017cbf91d08c6beaadb790ae44745a87a1\"\u003e\u003ccode\u003e4937fc0\u003c/code\u003e\u003c/a\u003e Release 0.14.15 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20735\"\u003e#20735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/98698936ec2cccaf8eb78018176d6d6da8daaee2\"\u003e\u003ccode\u003e9869893\u003c/code\u003e\u003c/a\u003e feat(bedrock-converse): Add support for Nova 2 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20736\"\u003e#20736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/40da24454784980dd4d27135533a1fff779d6929\"\u003e\u003ccode\u003e40da244\u003c/code\u003e\u003c/a\u003e fix(layoutir): restrict requires-python to \u0026gt;=3.12 to match layoutir dependenc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/6504188504a5070b43bb0d4633f000e129f51f87\"\u003e\u003ccode\u003e6504188\u003c/code\u003e\u003c/a\u003e feat: support custom span processor; refactor: use llama-index-instrumentatio...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/dc716d159cf93c60dca31e2abaca1166877216a2\"\u003e\u003ccode\u003edc716d1\u003c/code\u003e\u003c/a\u003e chore: update issue classifier action to v0.2.0 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20734\"\u003e#20734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/6d0aff422db769014e384242f7a2130015d71fa5\"\u003e\u003ccode\u003e6d0aff4\u003c/code\u003e\u003c/a\u003e ensure at least one message/conent block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/fdcc72cc362e033a45db52af52be15dad2bab472\"\u003e\u003ccode\u003efdcc72c\u003c/code\u003e\u003c/a\u003e feat: add issue classifier gh action (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20720\"\u003e#20720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/171ae830ad98c22cc69afa043678340536bc7dbe\"\u003e\u003ccode\u003e171ae83\u003c/code\u003e\u003c/a\u003e fix: Update WhatsAppChatLoader to retrieve DataFrame in pandas format (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20722\"\u003e#20722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/68c760a50d29844f96e56e189e91c676e6445bf9\"\u003e\u003ccode\u003e68c760a\u003c/code\u003e\u003c/a\u003e fix(layoutir): hotfix for output_dir crash and Block extraction (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20708\"\u003e#20708\u003c/a\u003e follo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/83f45ce5fcdd3a96c587ab3f86e527addda621f0\"\u003e\u003ccode\u003e83f45ce\u003c/code\u003e\u003c/a\u003e Add retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/run-llama/llama_index/compare/v0.14.14...v0.14.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-core` from 0.14.14 to 0.14.15\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/releases\"\u003ellama-index-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.15\u003c/h2\u003e\n\u003ch1\u003eRelease Notes\u003c/h1\u003e\n\u003ch2\u003e[2026-02-18]\u003c/h2\u003e\n\u003ch3\u003ellama-index-agent-agentmesh [0.1.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[Integration] AgentMesh: Trust Layer for LlamaIndex Agents (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20644\"\u003e#20644\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-core [0.14.15]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport basic operations for multimodal types (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20640\"\u003e#20640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat recursive llm type support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20642\"\u003e#20642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: remove redundant metadata_seperator field from TextNode (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20649\"\u003e#20649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): update mock prompt type in mock_prompts.py (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20661\"\u003e#20661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal template var formatting (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20682\"\u003e#20682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal prompt templates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20683\"\u003e#20683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal chat prompt helper (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20684\"\u003e#20684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eensure at least one message/content block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-ibm [0.6.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.9]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSonnet 4-6 addition (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20723\"\u003e#20723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.12.10]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(bedrock-converse): ensure thinking_delta is populated in all chat modes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20664\"\u003e#20664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(bedrock-converse): Add support for Claude Sonnet 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20726\"\u003e#20726\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-ibm [0.7.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-mistralai [0.10.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRrubini/mistral azure sdk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20668\"\u003e#20668\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-oci-data-science [1.0.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for new OCI DataScience endpoint /predictWithStream for streaming use case (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20545\"\u003e#20545\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-observability-otel [0.3.0]\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/run-llama/llama_index/blob/main/CHANGELOG.md\"\u003ellama-index-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003ellama-index-core [0.14.15]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport basic operations for multimodal types (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20640\"\u003e#20640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat recursive llm type support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20642\"\u003e#20642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: remove redundant metadata_seperator field from TextNode (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20649\"\u003e#20649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): update mock prompt type in mock_prompts.py (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20661\"\u003e#20661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal template var formatting (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20682\"\u003e#20682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal prompt templates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20683\"\u003e#20683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal chat prompt helper (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20684\"\u003e#20684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eensure at least one message/content block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-ibm [0.6.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.9]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSonnet 4-6 addition (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20723\"\u003e#20723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.12.10]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(bedrock-converse): ensure thinking_delta is populated in all chat modes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20664\"\u003e#20664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(bedrock-converse): Add support for Claude Sonnet 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20726\"\u003e#20726\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-ibm [0.7.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-mistralai [0.10.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRrubini/mistral azure sdk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20668\"\u003e#20668\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-oci-data-science [1.0.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for new OCI DataScience endpoint /predictWithStream for streaming use case (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20545\"\u003e#20545\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-observability-otel [0.3.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eimprove otel data serialization by flattening dicts (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20719\"\u003e#20719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: support custom span processor; refactor: use llama-index-instrumentation instead of llama-index-core (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20732\"\u003e#20732\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-program-evaporate [0.5.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSandbox LLM-generated code execution in EvaporateExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20676\"\u003e#20676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-readers-bitbucket [0.4.2]\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/4937fc017cbf91d08c6beaadb790ae44745a87a1\"\u003e\u003ccode\u003e4937fc0\u003c/code\u003e\u003c/a\u003e Release 0.14.15 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20735\"\u003e#20735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/98698936ec2cccaf8eb78018176d6d6da8daaee2\"\u003e\u003ccode\u003e9869893\u003c/code\u003e\u003c/a\u003e feat(bedrock-converse): Add support for Nova 2 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20736\"\u003e#20736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/40da24454784980dd4d27135533a1fff779d6929\"\u003e\u003ccode\u003e40da244\u003c/code\u003e\u003c/a\u003e fix(layoutir): restrict requires-python to \u0026gt;=3.12 to match layoutir dependenc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/6504188504a5070b43bb0d4633f000e129f51f87\"\u003e\u003ccode\u003e6504188\u003c/code\u003e\u003c/a\u003e feat: support custom span processor; refactor: use llama-index-instrumentatio...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/dc716d159cf93c60dca31e2abaca1166877216a2\"\u003e\u003ccode\u003edc716d1\u003c/code\u003e\u003c/a\u003e chore: update issue classifier action to v0.2.0 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20734\"\u003e#20734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/6d0aff422db769014e384242f7a2130015d71fa5\"\u003e\u003ccode\u003e6d0aff4\u003c/code\u003e\u003c/a\u003e ensure at least one message/conent block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/fdcc72cc362e033a45db52af52be15dad2bab472\"\u003e\u003ccode\u003efdcc72c\u003c/code\u003e\u003c/a\u003e feat: add issue classifier gh action (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20720\"\u003e#20720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/171ae830ad98c22cc69afa043678340536bc7dbe\"\u003e\u003ccode\u003e171ae83\u003c/code\u003e\u003c/a\u003e fix: Update WhatsAppChatLoader to retrieve DataFrame in pandas format (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20722\"\u003e#20722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/68c760a50d29844f96e56e189e91c676e6445bf9\"\u003e\u003ccode\u003e68c760a\u003c/code\u003e\u003c/a\u003e fix(layoutir): hotfix for output_dir crash and Block extraction (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20708\"\u003e#20708\u003c/a\u003e follo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/83f45ce5fcdd3a96c587ab3f86e527addda621f0\"\u003e\u003ccode\u003e83f45ce\u003c/code\u003e\u003c/a\u003e Add retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/run-llama/llama_index/compare/v0.14.14...v0.14.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-embeddings-gemini` from 0.4.1 to 0.4.2\n\nUpdates `llama-index-llms-anthropic` from 0.10.5 to 0.10.10\n\nUpdates `llama-index-llms-gemini` from 0.6.1 to 0.6.2\n\nUpdates `llama-index-llms-google-genai` from 0.8.3 to 0.8.7\n\nUpdates `llama-index-llms-huggingface-api` from 0.6.1 to 0.6.2\n\nUpdates `llama-index-llms-mistralai` from 0.9.0 to 0.10.0.post2\n\nUpdates `llama-index-llms-openai` from 0.6.13 to 0.6.21\n\nUpdates `llama-index-llms-openai-like` from 0.5.3 to 0.6.0\n\nUpdates `llama-index-readers-file` from 0.5.4 to 0.5.6\n\nUpdates `llama-index-readers-github` from 0.8.2 to 0.10.0\n\nUpdates `llama-index-workflows` from 2.12.0 to 2.14.2\n\nUpdates `mistralai` from 1.10.0 to 1.12.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mistralai/client-python/releases\"\u003emistralai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epython - v1.12.4 - 2026-02-20 17:54:29\u003c/h2\u003e\n\u003ch1\u003eGenerated by Speakeasy CLI\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://pypi.org/project/mistralai/1.12.4\"\u003emistralai 1.12.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePython SDK Changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.conversations.start()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.inputs.[array].[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.conversations.list()\u003c/code\u003e:  \u003ccode\u003eresponse.[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.conversations.get()\u003c/code\u003e:  \u003ccode\u003eresponse\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.conversations.append()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.inputs.[array].[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.conversations.get_history()\u003c/code\u003e:  \u003ccode\u003eresponse\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.conversations.get_messages()\u003c/code\u003e:  \u003ccode\u003eresponse\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.conversations.restart()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.inputs.[array].[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.conversations.start_stream()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.inputs.[array].[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse.[].data\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.conversations.append_stream()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.inputs.[array].[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse.[].data\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.conversations.restart_stream()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.inputs.[array].[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse.[].data\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.agents.create()\u003c/code\u003e:  \u003ccode\u003eresponse.object\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.agents.list()\u003c/code\u003e:  \u003ccode\u003eresponse.[].object\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.agents.get()\u003c/code\u003e:  \u003ccode\u003eresponse.object\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.agents.update()\u003c/code\u003e:  \u003ccode\u003eresponse.object\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.agents.update_version()\u003c/code\u003e:  \u003ccode\u003eresponse.object\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.agents.list_versions()\u003c/code\u003e:  \u003ccode\u003eresponse.[].object\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.beta.agents.get_version()\u003c/code\u003e:  \u003ccode\u003eresponse.object\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.chat.complete()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.messages.[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse.choices.[].message\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.chat.stream()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.messages.[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse.[].data.choices.[].delta.content.[array].[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.fim.complete()\u003c/code\u003e:  \u003ccode\u003eresponse.choices.[].message\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.fim.stream()\u003c/code\u003e:  \u003ccode\u003eresponse.[].data.choices.[].delta.content.[array].[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.agents.complete()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.messages.[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse.choices.[].message\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.agents.stream()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.messages.[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse.[].data.choices.[].delta.content.[array].[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.classifiers.moderate_chat()\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erequest.inputs.[array].[]\u003c/code\u003e \u003cstrong\u003eChanged\u003c/strong\u003e \u003cstrong\u003eBreaking\u003c/strong\u003e :warning:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emistral.classifiers.classify_chat()\u003c/code\u003e:\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mistralai/client-python/blob/v1.12.4/RELEASES.md\"\u003emistralai's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2024-08-07 14:25:13\u003c/h2\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cp\u003eBased on:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOpenAPI Doc\u003c/li\u003e\n\u003cli\u003eSpeakeasy CLI 1.356.0 (2.388.1) \u003ca href=\"https://github.com/speakeasy-api/speakeasy\"\u003ehttps://github.com/speakeasy-api/speakeasy\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eGenerated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[python v1.0.0] .\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eReleases\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[PyPI v1.0.0] \u003ca href=\"https://pypi.org/project/mistralai/1.0.0\"\u003ehttps://pypi.org/project/mistralai/1.0.0\u003c/a\u003e - .\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024-08-08 18:12:16\u003c/h2\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cp\u003eBased on:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOpenAPI Doc\u003c/li\u003e\n\u003cli\u003eSpeakeasy CLI 1.357.4 (2.390.6) \u003ca href=\"https://github.com/speakeasy-api/speakeasy\"\u003ehttps://github.com/speakeasy-api/speakeasy\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eGenerated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[python v1.0.1] .\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eReleases\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[PyPI v1.0.1] \u003ca href=\"https://pypi.org/project/mistralai/1.0.1\"\u003ehttps://pypi.org/project/mistralai/1.0.1\u003c/a\u003e - .\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024-08-20 08:36:28\u003c/h2\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cp\u003eBased on:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOpenAPI Doc\u003c/li\u003e\n\u003cli\u003eSpeakeasy CLI 1.376.0 (2.402.5) \u003ca href=\"https://github.com/speakeasy-api/speakeasy\"\u003ehttps://github.com/speakeasy-api/speakeasy\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eGenerated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[python v1.0.2] .\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eReleases\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[PyPI v1.0.2] \u003ca href=\"https://pypi.org/project/mistralai/1.0.2\"\u003ehttps://pypi.org/project/mistralai/1.0.2\u003c/a\u003e - .\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024-08-29 09:09:05\u003c/h2\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cp\u003eBased on:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOpenAPI Doc\u003c/li\u003e\n\u003cli\u003eSpeakeasy CLI 1.382.0 (2.404.11) \u003ca href=\"https://github.com/speakeasy-api/speakeasy\"\u003ehttps://github.com/speakeasy-api/speakeasy\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eGenerated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[python v1.0.3] .\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eReleases\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[PyPI v1.0.3] \u003ca href=\"https://pypi.org/project/mistralai/1.0.3\"\u003ehttps://pypi.org/project/mistralai/1.0.3\u003c/a\u003e - .\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024-09-13 16:21:24\u003c/h2\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cp\u003eBased on:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOpenAPI Doc\u003c/li\u003e\n\u003cli\u003eSpeakeasy CLI 1.396.7 (2.415.6) \u003ca href=\"https://github.com/speakeasy-api/speakeasy\"\u003ehttps://github.com/speakeasy-api/speakeasy\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eGenerated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[python v1.1.0] .\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eReleases\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mistralai/client-python/commit/c3f22d3c9bf7697f234872e34544eb6f9cdf3feb\"\u003e\u003ccode\u003ec3f22d3\u003c/code\u003e\u003c/a\u003e fix: change constFieldCasing from upper to normal (\u003ca href=\"https://redirect.github.com/mistralai/client-python/issues/361\"\u003e#361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mistralai/client-python/commit/2b8a1268c98a2cf0d4aadc2ea5b71e7dbbbbb180\"\u003e\u003ccode\u003e2b8a126\u003c/code\u003e\u003c/a\u003e fix (\u003ca href=\"https://redirect.github.com/mistralai/client-python/issues/356\"\u003e#356\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mistralai/client-python/commit/25d4457ba0d6b020b133c7823f1f1efc79094ec4\"\u003e\u003ccode\u003e25d4457\u003c/code\u003e\u003c/a\u003e feat(audio): add PyAudio initialization check and error handling (\u003ca href=\"https://redirect...\n\n_Description has been truncated_","html_url":"https://github.com/DylanLRPollock/Monkey-Head-Project/pull/478","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/DylanLRPollock%2FMonkey-Head-Project/issues/478","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/478/packages"}},{"old_version":"0.32.0","new_version":"0.33.0","update_type":"minor","path":null,"pr_created_at":"2026-02-20T21:04:34.000Z","version_change":"0.32.0 → 0.33.0","issue":{"uuid":"3970367666","node_id":"PR_kwDOQjesjs7FQnU9","number":43,"state":"closed","title":"Bump trio from 0.32.0 to 0.33.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-21T18:10:48.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-20T21:04:34.000Z","updated_at":"2026-02-21T18:10:49.000Z","time_to_close":75974,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"trio","old_version":"0.32.0","new_version":"0.33.0","repository_url":"https://github.com/python-trio/trio"}],"path":null,"ecosystem":"pip"},"body":"Bumps [trio](https://github.com/python-trio/trio) from 0.32.0 to 0.33.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.33.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.32.0...v0.33.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.32.0...v0.33.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStart supporting Android's new \u003ccode\u003e\u0026quot;android\u0026quot;\u003c/code\u003e \u003ccode\u003esys.platform\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3357\"\u003epython-trio/trio#3357\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBoth \u003ccode\u003etrio.testing.RaisesGroup\u003c/code\u003e and \u003ccode\u003etrio.testing.Matcher\u003c/code\u003e have been deprecated. Pytest alternatives \u003ccode\u003epytest.RaisesGroup\u003c/code\u003e and \u003ccode\u003epytest.RaisesExc\u003c/code\u003e (respectively) are considered correct replacement. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3326\"\u003epython-trio/trio#3326\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/python-trio/trio/commit/3073f0c2108bad83c27dda6c83474a9b8ce4a957\"\u003e\u003ccode\u003e3073f0c\u003c/code\u003e\u003c/a\u003e Bump version to 0.33.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c21654b5f8375c5104625e6748492913cdb9d304\"\u003e\u003ccode\u003ec21654b\u003c/code\u003e\u003c/a\u003e Bump dependencies from commit 694044 (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3391\"\u003e#3391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/69404459f8eb0f7c4ca1433174fa0f5e9bad38ff\"\u003e\u003ccode\u003e6940445\u003c/code\u003e\u003c/a\u003e Documentation search improvements (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/e27a303941ae2bf63f2d2556b387e06262aa91f9\"\u003e\u003ccode\u003ee27a303\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3384\"\u003e#3384\u003c/a\u003e from A5rocks/update-sphinx\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/93b989b36befc55c5bded3f51a82a00a2aca37e8\"\u003e\u003ccode\u003e93b989b\u003c/code\u003e\u003c/a\u003e Add coredis and streaQ libraries to documentation (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3389\"\u003e#3389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/bc94ce138fa81f460f0d65f38a03cf3db04e6fe3\"\u003e\u003ccode\u003ebc94ce1\u003c/code\u003e\u003c/a\u003e Add coredis and streaQ libraries to documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/1ee96c8d84718cf32ef607a08b9069c8c2cdcc9f\"\u003e\u003ccode\u003e1ee96c8\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3387\"\u003e#3387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/95d92051c5acf71d717c77c7c996d4d0db3ab952\"\u003e\u003ccode\u003e95d9205\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3386\"\u003e#3386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/21250b16b52826ca1b6a38a8f08ecd40974c2c22\"\u003e\u003ccode\u003e21250b1\u003c/code\u003e\u003c/a\u003e Update to Sphinx 9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/4a9c6db4dd1a30bda74a08cf1e9a24c4777d9471\"\u003e\u003ccode\u003e4a9c6db\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3382\"\u003e#3382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/compare/v0.32.0...v0.33.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trio\u0026package-manager=pip\u0026previous-version=0.32.0\u0026new-version=0.33.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/adcaudill/yawast-ng/pull/43","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/adcaudill%2Fyawast-ng/issues/43","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/43/packages"}},{"old_version":"0.29.0","new_version":"0.32.0","update_type":"minor","path":null,"pr_created_at":"2026-01-19T09:03:08.000Z","version_change":"0.29.0 → 0.32.0","issue":{"uuid":"3828704907","node_id":"PR_kwDOQTBUns699LFr","number":269,"state":"closed","title":"deps(core)(deps): bump the minor-patches-catch-all group across 1 directory with 25 updates","user":"dependabot[bot]","labels":["priority-low","area-etl","dependencies","python","type-infra","python-core"],"assignees":["prototyp33"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-26T08:41:51.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-19T09:03:08.000Z","updated_at":"2026-01-26T08:41:52.000Z","time_to_close":603523,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(core)(deps): bump","group_name":"minor-patches-catch-all","update_count":25,"packages":[{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"soupsieve","old_version":"2.6","new_version":"2.8.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"itemadapter","old_version":"0.12.2","new_version":"0.13.1","repository_url":"https://github.com/scrapy/itemadapter"},{"name":"tldextract","old_version":"5.3.0","new_version":"5.3.1","repository_url":"https://github.com/john-kurkowski/tldextract"},{"name":"selenium","old_version":"4.29.0","new_version":"4.40.0","repository_url":"https://github.com/SeleniumHQ/Selenium"},{"name":"cachetools","old_version":"6.2.3","new_version":"6.2.4","repository_url":"https://github.com/tkem/cachetools"},{"name":"filelock","old_version":"3.20.0","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"trio","old_version":"0.29.0","new_version":"0.32.0","repository_url":"https://github.com/python-trio/trio"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"wsproto","old_version":"1.2.0","new_version":"1.3.2","repository_url":"https://github.com/python-hyper/wsproto"},{"name":"jsonschema","old_version":"4.25.1","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"pyasn1","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pillow","old_version":"12.0.0","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"pyparsing","old_version":"3.2.5","new_version":"3.3.1","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"gitpython","old_version":"3.1.45","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"tornado","old_version":"6.5.3","new_version":"6.5.4","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"narwhals","old_version":"2.13.0","new_version":"2.15.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"zope-interface","old_version":"8.1.1","new_version":"8.2","repository_url":"https://github.com/zopefoundation/zope.interface"},{"name":"protobuf","old_version":"6.33.2","new_version":"6.33.4","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"zeep","old_version":"4.2.1","new_version":"4.3.2","repository_url":"https://github.com/mvantellingen/python-zeep"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-patches-catch-all group with 25 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.6` | `2.8.2` |\n| [itemadapter](https://github.com/scrapy/itemadapter) | `0.12.2` | `0.13.1` |\n| [tldextract](https://github.com/john-kurkowski/tldextract) | `5.3.0` | `5.3.1` |\n| [selenium](https://github.com/SeleniumHQ/Selenium) | `4.29.0` | `4.40.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `6.2.3` | `6.2.4` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.0` | `3.20.3` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [trio](https://github.com/python-trio/trio) | `0.29.0` | `0.32.0` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [wsproto](https://github.com/python-hyper/wsproto) | `1.2.0` | `1.3.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.1` | `4.26.0` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.1` | `0.6.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.0.0` | `12.1.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.5` | `3.3.1` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.45` | `3.1.46` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.3` | `6.5.4` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.13.0` | `2.15.0` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `8.1.1` | `8.2` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.33.2` | `6.33.4` |\n| [zeep](https://github.com/mvantellingen/python-zeep) | `4.2.1` | `4.3.2` |\n\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.4\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.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\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.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\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/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `soupsieve` from 2.6 to 2.8.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/soupsieve/releases\"\u003esoupsieve's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Ensure custom selectors or namespace dictionaries reject non-string keys (\u003ca href=\"https://github.com/mundanevision20\"\u003e\u003ccode\u003e@​mundanevision20\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix handling of \u003ccode\u003e:in-range\u003c/code\u003e and \u003ccode\u003e:out-of-range\u003c/code\u003e with end of year weeks (\u003ca href=\"https://github.com/mundanevision20\"\u003e\u003ccode\u003e@​mundanevision20\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix a potential infinite loop in the pretty printing debug function (\u003ca href=\"https://github.com/mundanevision20\"\u003e\u003ccode\u003e@​mundanevision20\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Changes in tests to accommodate latest Python HTML parser changes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Drop support for Python 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add support for Python 3.14.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Deploy with PyPI's \u0026quot;Trusted Publisher\u0026quot;.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.7\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add \u003ccode\u003e:open\u003c/code\u003e pseudo selector.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add \u003ccode\u003e:muted\u003c/code\u003e pseudo selector.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Recognize the following pseudo selectors: \u003ccode\u003e:autofill\u003c/code\u003e, \u003ccode\u003e:buffering\u003c/code\u003e, \u003ccode\u003e:fullscreen\u003c/code\u003e, \u003ccode\u003e:picture-in-picture\u003c/code\u003e,\n\u003ccode\u003e:popover-open\u003c/code\u003e, \u003ccode\u003e:seeking\u003c/code\u003e, \u003ccode\u003e:stalled\u003c/code\u003e, and \u003ccode\u003e:volume-locked\u003c/code\u003e. These selectors, while recognized, will not match any\nelement as they require a live environment to check element states and browser states. This just prevents Soup Sieve\nfrom failing when any of these selectors are specified.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: A number of existing pseudo-classes are no longer noted as experimental.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Typing fixes.\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/facelessuser/soupsieve/commit/09e106dc0fd6579c0327801fdcceb380ff60170e\"\u003e\u003ccode\u003e09e106d\u003c/code\u003e\u003c/a\u003e Fix grammar\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/09b27696ada6f07523a077950ce73da45579d524\"\u003e\u003ccode\u003e09b2769\u003c/code\u003e\u003c/a\u003e Update docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/c6e80fcab9ca4d3eaa61913778263e82bcecca1f\"\u003e\u003ccode\u003ec6e80fc\u003c/code\u003e\u003c/a\u003e Various fixes by \u003ca href=\"https://github.com/mundanevision20\"\u003e\u003ccode\u003e@​mundanevision20\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/288\"\u003e#288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/f89979745e12e83dbb31dde910a0ad08e9c5c717\"\u003e\u003ccode\u003ef899797\u003c/code\u003e\u003c/a\u003e Adjust changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/1b964a850bb482cc183f3f70811b25487ba200ee\"\u003e\u003ccode\u003e1b964a8\u003c/code\u003e\u003c/a\u003e Switch to using Zensical for documents (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/286\"\u003e#286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/046ce54956a0c30120038561e53b40994d29de2c\"\u003e\u003ccode\u003e046ce54\u003c/code\u003e\u003c/a\u003e Adjustments for changes in HTML parser (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/285\"\u003e#285\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/bf937788f0c3ff9bb2ffffacef7ad8832d8da16e\"\u003e\u003ccode\u003ebf93778\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop Python 3.8 (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/283\"\u003e#283\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/d82b33b72dd2e905dc441babdd68c98c846c1501\"\u003e\u003ccode\u003ed82b33b\u003c/code\u003e\u003c/a\u003e Spelling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/2fe1c55af2e2b1f033220a741113dba220bb84c9\"\u003e\u003ccode\u003e2fe1c55\u003c/code\u003e\u003c/a\u003e Use \u0026quot;Trusted Publisher\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/a616022df73ddc5ecb71092155be9baba876b52d\"\u003e\u003ccode\u003ea616022\u003c/code\u003e\u003c/a\u003e Link license in readme\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facelessuser/soupsieve/compare/2.6...2.8.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `itemadapter` from 0.12.2 to 0.13.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapy/itemadapter/blob/master/Changelog.md\"\u003eitemadapter's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e0.13.1 (2026-01-08)\u003c/h3\u003e\n\u003cp\u003eFixed \u003ccode\u003eget_json_schema()\u003c/code\u003e to properly format multiline field docstrings using\n\u003ccode\u003einspect.cleandoc()\u003c/code\u003e, ensuring consistent indentation and whitespace handling\n(\u003ca href=\"https://redirect.github.com/scrapy/itemadapter/pull/115\"\u003e#115\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003e0.13.0 (2025-12-15)\u003c/h3\u003e\n\u003cp\u003eAdded support for Python 3.14 and removed support for \u003ca href=\"https://pypy.org/\"\u003ePyPy\u003c/a\u003e\n3.10.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eget_json_schema()\u003c/code\u003e no longer reports all \u003ccode\u003escrapy.Item\u003c/code\u003e fields as required.\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/scrapy/itemadapter/commit/a358dfe694543d4227003d75221301a9b55732de\"\u003e\u003ccode\u003ea358dfe\u003c/code\u003e\u003c/a\u003e Bump version: 0.13.0 → 0.13.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/ac5d1023d3ae5fc239f64b78175a36d2f4761e25\"\u003e\u003ccode\u003eac5d102\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scrapy/itemadapter/issues/116\"\u003e#116\u003c/a\u003e from ErikFarellZyte/release-notes-0.13.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/48d04a904ca45d20bdc18bf935fbc0dda22b1254\"\u003e\u003ccode\u003e48d04a9\u003c/code\u003e\u003c/a\u003e Release notes for version 0.13.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/69437d9324bbe4ad7c1b12ebcd26b53c0f88e65b\"\u003e\u003ccode\u003e69437d9\u003c/code\u003e\u003c/a\u003e Use cleandoc() for field docstrings in JSON schema (\u003ca href=\"https://redirect.github.com/scrapy/itemadapter/issues/115\"\u003e#115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/47481554948a1af59b3676b7310b2a93e0b96212\"\u003e\u003ccode\u003e4748155\u003c/code\u003e\u003c/a\u003e Bump version: 0.12.2 → 0.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/bd8354658ce8bc974dfa83be7e4cf5f7e3313af4\"\u003e\u003ccode\u003ebd83546\u003c/code\u003e\u003c/a\u003e Release notes for 0.13.0 (\u003ca href=\"https://redirect.github.com/scrapy/itemadapter/issues/114\"\u003e#114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/640995a710369ecaec990b821867a106afc0a4ee\"\u003e\u003ccode\u003e640995a\u003c/code\u003e\u003c/a\u003e Make Scrapy fields always optional (\u003ca href=\"https://redirect.github.com/scrapy/itemadapter/issues/113\"\u003e#113\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/da9e9cc1f8d1638c33bee905f78bee18b9a157db\"\u003e\u003ccode\u003eda9e9cc\u003c/code\u003e\u003c/a\u003e Migrate tests to pytest asserts (\u003ca href=\"https://redirect.github.com/scrapy/itemadapter/issues/111\"\u003e#111\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/f3957f675cced9efa3ec6fefea374cc858b04f0c\"\u003e\u003ccode\u003ef3957f6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scrapy/itemadapter/issues/110\"\u003e#110\u003c/a\u003e from scrapy/py314\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/46902a4e91d8c2672c6443a5804e4f32e8c97008\"\u003e\u003ccode\u003e46902a4\u003c/code\u003e\u003c/a\u003e Drop some 3.13 CI jobs and PyPy 3.10.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scrapy/itemadapter/compare/v0.12.2...v0.13.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tldextract` from 5.3.0 to 5.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/john-kurkowski/tldextract/releases\"\u003etldextract's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.3.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBugfixes\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.9 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Python 3.14 + PyPy 3.11 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSpeed up IP address search space with \u003ccode\u003eisdecimal()\u003c/code\u003e instead of \u003ccode\u003eisdigit()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/352\"\u003e#352\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDocs\n\u003cul\u003e\n\u003cli\u003eReorganize, dedupe, and shorten README (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/349\"\u003e#349\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bmos\"\u003e\u003ccode\u003e@​bmos\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/pull/358\"\u003ejohn-kurkowski/tldextract#358\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elliotwutingfeng\"\u003e\u003ccode\u003e@​elliotwutingfeng\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/john-kurkowski/tldextract/compare/5.3.0...5.3.1\"\u003ehttps://github.com/john-kurkowski/tldextract/compare/5.3.0...5.3.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/john-kurkowski/tldextract/blob/master/CHANGELOG.md\"\u003etldextract's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.3.1 (2025-12-28)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBugfixes\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.9 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Python 3.14 + PyPy 3.11 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSpeed up IP address search space with \u003ccode\u003eisdecimal()\u003c/code\u003e instead of \u003ccode\u003eisdigit()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/352\"\u003e#352\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDocs\n\u003cul\u003e\n\u003cli\u003eReorganize, dedupe, and shorten README (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/349\"\u003e#349\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/john-kurkowski/tldextract/commit/361f12febf901ef48215d0380551d86c7f0608ac\"\u003e\u003ccode\u003e361f12f\u003c/code\u003e\u003c/a\u003e 5.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/34482ce70cb4ca7210d39fefb57b8b1ee34bc853\"\u003e\u003ccode\u003e34482ce\u003c/code\u003e\u003c/a\u003e Upgrade to newer setuptools-scm usage instructions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/b9a78148f1551c4f3c3d441c07cafd34207030cc\"\u003e\u003ccode\u003eb9a7814\u003c/code\u003e\u003c/a\u003e Fix license field deprecations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/e397b6cdff10e89cbf66e758c8fcfa31ede2dabd\"\u003e\u003ccode\u003ee397b6c\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.9 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/77b10ba7fca31a827fc678dbff34897663f2f611\"\u003e\u003ccode\u003e77b10ba\u003c/code\u003e\u003c/a\u003e Support Python 3.14 + PyPy 3.11 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/49c59d9f1ff9e25fce73ba8d9cde5274f7117c2b\"\u003e\u003ccode\u003e49c59d9\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Pin requests-file during typecheck\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/6e49ea583c85a80e82ae5554cd615e8ee305a026\"\u003e\u003ccode\u003e6e49ea5\u003c/code\u003e\u003c/a\u003e Reorganize, dedupe, and shorten README (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/349\"\u003e#349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/25643e4dcdc22deecc0b75966f5cd255ed3c6d49\"\u003e\u003ccode\u003e25643e4\u003c/code\u003e\u003c/a\u003e Pin requests-file during typecheck\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/b48507cbe1240878d7336fb3d72fc62b9421e684\"\u003e\u003ccode\u003eb48507c\u003c/code\u003e\u003c/a\u003e Use isdecimal() instead of isdigit() (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/352\"\u003e#352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/d89554d13ab323602d851ddadb8b02be369b37c6\"\u003e\u003ccode\u003ed89554d\u003c/code\u003e\u003c/a\u003e Restrict CI workflow access privileges to read-only (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/348\"\u003e#348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/john-kurkowski/tldextract/compare/5.3.0...5.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `selenium` from 4.29.0 to 4.40.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/SeleniumHQ/Selenium/releases\"\u003eselenium's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eSelenium 4.40.0\u003c/h2\u003e\n\u003ch2\u003eDetailed Changelogs by Component\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG\"\u003eJava\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES\"\u003ePython\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG\"\u003eDotNet\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES\"\u003eRuby\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md\"\u003eJavaScript\u003c/a\u003e\u003c/strong\u003e\n\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cul\u003e\n\u003cli\u003e[dotnet] Modernize \u003ccode\u003eEnvironmentManager\u003c/code\u003e, standardize assembly teardown by \u003ca href=\"https://github.com/RenderMichael\"\u003e\u003ccode\u003e@​RenderMichael\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/15551\"\u003eSeleniumHQ/selenium#15551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java] Refactor tests by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16684\"\u003eSeleniumHQ/selenium#16684\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ci]: bump cargo lockfile by \u003ca href=\"https://github.com/navin772\"\u003e\u003ccode\u003e@​navin772\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16698\"\u003eSeleniumHQ/selenium#16698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java][BiDi] change emulation commands return type to void by \u003ca href=\"https://github.com/Delta456\"\u003e\u003ccode\u003e@​Delta456\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16699\"\u003eSeleniumHQ/selenium#16699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java] simplify strings processing by \u003ca href=\"https://github.com/iampopovich\"\u003e\u003ccode\u003e@​iampopovich\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/15309\"\u003eSeleniumHQ/selenium#15309\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix few more flaky ruby tests by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16695\"\u003eSeleniumHQ/selenium#16695\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[bazel] Switch to custom \u003ccode\u003eclosure_js_deps\u003c/code\u003e rule by \u003ca href=\"https://github.com/shs96c\"\u003e\u003ccode\u003e@​shs96c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16571\"\u003eSeleniumHQ/selenium#16571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [bidi] Support SetScreenSettingsOverrideAsync method in Emulation module by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16704\"\u003eSeleniumHQ/selenium#16704\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] Modernize code patterns in test suites by \u003ca href=\"https://github.com/RenderMichael\"\u003e\u003ccode\u003e@​RenderMichael\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16701\"\u003eSeleniumHQ/selenium#16701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse proper AssertJ asserts that generate a useful error message by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16707\"\u003eSeleniumHQ/selenium#16707\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix Java language level in IDEA by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16708\"\u003eSeleniumHQ/selenium#16708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Properly verify Selenium Manager exists by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16711\"\u003eSeleniumHQ/selenium#16711\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix flaky Ruby test \u003ccode\u003eelement_spec.rb\u003c/code\u003e by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16709\"\u003eSeleniumHQ/selenium#16709\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java][BiDi] implement \u003ccode\u003eemulation.setScreenOrientationOverride\u003c/code\u003e by \u003ca href=\"https://github.com/Delta456\"\u003e\u003ccode\u003e@​Delta456\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16705\"\u003eSeleniumHQ/selenium#16705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[rb] add synchronization and error handling for socket interactions by \u003ca href=\"https://github.com/titusfortner\"\u003e\u003ccode\u003e@​titusfortner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16487\"\u003eSeleniumHQ/selenium#16487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[rb] mark low level bidi implementation as private api by \u003ca href=\"https://github.com/titusfortner\"\u003e\u003ccode\u003e@​titusfortner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16475\"\u003eSeleniumHQ/selenium#16475\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[rb] ensure driver process is always stopped by \u003ca href=\"https://github.com/titusfortner\"\u003e\u003ccode\u003e@​titusfortner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/15635\"\u003eSeleniumHQ/selenium#15635\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[rb] create user-friendly method for enabling bidi by \u003ca href=\"https://github.com/titusfortner\"\u003e\u003ccode\u003e@​titusfortner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/14284\"\u003eSeleniumHQ/selenium#14284\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [bidi] Added missing Script.RemoteReference LocaclValue type by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16717\"\u003eSeleniumHQ/selenium#16717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] Standardize \u003ccode\u003eIEquatable\u0026lt;T\u0026gt;\u003c/code\u003e implementations across types overriding Equals by \u003ca href=\"https://github.com/RenderMichael\"\u003e\u003ccode\u003e@​RenderMichael\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16665\"\u003eSeleniumHQ/selenium#16665\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] Fix nullability warnings in \u003ccode\u003eWebDriver\u003c/code\u003e by \u003ca href=\"https://github.com/RenderMichael\"\u003e\u003ccode\u003e@​RenderMichael\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16662\"\u003eSeleniumHQ/selenium#16662\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Don't compare object identity in conftest by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16723\"\u003eSeleniumHQ/selenium#16723\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16720\"\u003e#16720\u003c/a\u003e avoid failing because of temporary Chrome internal files by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16722\"\u003eSeleniumHQ/selenium#16722\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[rb] Add force encoding to remove warnings caused by json 3.0 by \u003ca href=\"https://github.com/aguspe\"\u003e\u003ccode\u003e@​aguspe\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16728\"\u003eSeleniumHQ/selenium#16728\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Remove deprecated FTP proxy support by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16721\"\u003eSeleniumHQ/selenium#16721\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Bump ruff and mypy versions by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16737\"\u003eSeleniumHQ/selenium#16737\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCreate target directories before copying file by \u003ca href=\"https://github.com/MohabMohie\"\u003e\u003ccode\u003e@​MohabMohie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16739\"\u003eSeleniumHQ/selenium#16739\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[bazel+closure]: Vendor the version of closure library we use by \u003ca href=\"https://github.com/shs96c\"\u003e\u003ccode\u003e@​shs96c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16742\"\u003eSeleniumHQ/selenium#16742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[closure] Fix failing \u003ccode\u003e//javascript/atoms:test-*\u003c/code\u003e targets by \u003ca href=\"https://github.com/shs96c\"\u003e\u003ccode\u003e@​shs96c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16749\"\u003eSeleniumHQ/selenium#16749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid sleep in tests by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16713\"\u003eSeleniumHQ/selenium#16713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[bazel] Bump \u003ccode\u003erules_closure\u003c/code\u003e and google closure libary to latest release by \u003ca href=\"https://github.com/shs96c\"\u003e\u003ccode\u003e@​shs96c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16755\"\u003eSeleniumHQ/selenium#16755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[refactor] call WebDriverException constructor instead of using reflection by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16763\"\u003eSeleniumHQ/selenium#16763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[build] Pin Browsers in Bazel by default by \u003ca href=\"https://github.com/titusfortner\"\u003e\u003ccode\u003e@​titusfortner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16743\"\u003eSeleniumHQ/selenium#16743\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[build] build selenium manager for tests by \u003ca href=\"https://github.com/titusfortner\"\u003e\u003ccode\u003e@​titusfortner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16736\"\u003eSeleniumHQ/selenium#16736\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[refactor] replace JUnit assertions by AssertJ by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16765\"\u003eSeleniumHQ/selenium#16765\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Add LocalWebDriver base class by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16730\"\u003eSeleniumHQ/selenium#16730\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix bug in FileHandler: it always failed on MacOS by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16771\"\u003eSeleniumHQ/selenium#16771\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/SeleniumHQ/selenium/commit/b3333f1c50b5ffa9c9cdaf325da79a84a4ec5ba1\"\u003e\u003ccode\u003eb3333f1\u003c/code\u003e\u003c/a\u003e [build] Prepare for release of Selenium 4.40 (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16931\"\u003e#16931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/1229133ce3f58d2e24a126168c75bb790bf836d7\"\u003e\u003ccode\u003e1229133\u003c/code\u003e\u003c/a\u003e [build] manual trigger job needs an approval step to limit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/1cc4bc7bfc96d7299558639de445ea577a749fb4\"\u003e\u003ccode\u003e1cc4bc7\u003c/code\u003e\u003c/a\u003e [build] remove ruby remote tests from CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/bcd0976dfd3350f2590673fa80804ca290b13233\"\u003e\u003ccode\u003ebcd0976\u003c/code\u003e\u003c/a\u003e [build] use rulesets to restrict and unrestrict trunk during release window (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/47dbd0d467006025d568914347a2adedad3590bb\"\u003e\u003ccode\u003e47dbd0d\u003c/code\u003e\u003c/a\u003e [dotnet] [bidi] Expose Input module in root BiDi class (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16940\"\u003e#16940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/1fefb89de6e5ae51b6bb55aceb6a3e8bc5cb1df9\"\u003e\u003ccode\u003e1fefb89\u003c/code\u003e\u003c/a\u003e [dotnet] [bidi] FileDialogOpened event in Input module (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16934\"\u003e#16934\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/691fb1cd6d87098ded9562b7ced9ea0d89ccf315\"\u003e\u003ccode\u003e691fb1c\u003c/code\u003e\u003c/a\u003e [grid] Improve race conditions in Grid session distribution (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16939\"\u003e#16939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/aaeb4a5285c607cd311ca7fd63c47de4816ca49d\"\u003e\u003ccode\u003eaaeb4a5\u003c/code\u003e\u003c/a\u003e [build] ensure compatible edge browser and driver when pinning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/492b6c4aa0dae0899e7c531befb691afc45e3fc6\"\u003e\u003ccode\u003e492b6c4\u003c/code\u003e\u003c/a\u003e [dotnet] fix syntax issue with bazel target preventing build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/631c5b011e6a299f3b65c0e06ddb2a97f2b0b7ac\"\u003e\u003ccode\u003e631c5b0\u003c/code\u003e\u003c/a\u003e [java] sanitize descriptions before using them in JavaDoc comments\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/SeleniumHQ/Selenium/compare/selenium-4.29.0...selenium-4.40.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 6.2.3 to 6.2.4\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\u003ev6.2.4 (2025-12-15)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix license information displayed on PyPI be using an updated\nversion of \u003ccode\u003etwine\u003c/code\u003e for uploading.\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/9983ef8bd76758707ab9d197d4bd9fa47b4fb8bd\"\u003e\u003ccode\u003e9983ef8\u003c/code\u003e\u003c/a\u003e Bump version for uploading with updated twine.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tkem/cachetools/compare/v6.2.3...v6.2.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.20.0 to 3.20.3\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.20.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix TOCTOU symlink vulnerability in SoftFileLock 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/465\"\u003etox-dev/filelock#465\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.20.2...3.20.3\"\u003ehttps://github.com/tox-dev/filelock/compare/3.20.2...3.20.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.20.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Unix systems without O_NOFOLLOW by \u003ca href=\"https://github.com/mwilliamson\"\u003e\u003ccode\u003e@​mwilliamson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/463\"\u003etox-dev/filelock#463\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/tox-dev/filelock/pull/464\"\u003etox-dev/filelock#464\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/mwilliamson\"\u003e\u003ccode\u003e@​mwilliamson\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/463\"\u003etox-dev/filelock#463\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.20.1...3.20.2\"\u003ehttps://github.com/tox-dev/filelock/compare/3.20.1...3.20.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.20.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2025-68146: Fix TOCTOU symlink vulnerability in lock file creation 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/461\"\u003etox-dev/filelock#461\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.20.0...3.20.1\"\u003ehttps://github.com/tox-dev/filelock/compare/3.20.0...3.20.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/tox-dev/filelock/commit/41b42dd2c72aecf7da83dbda5903b8087dddc4d5\"\u003e\u003ccode\u003e41b42dd\u003c/code\u003e\u003c/a\u003e Fix TOCTOU symlink vulnerability in SoftFileLock (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/465\"\u003e#465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f2e7d4046b6a2b375a573bcfbad21827b99f8939\"\u003e\u003ccode\u003ef2e7d40\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/464\"\u003e#464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/50888548eb2f008d372e71f2835a47851ab83836\"\u003e\u003ccode\u003e5088854\u003c/code\u003e\u003c/a\u003e Support Unix systems without O_NOFOLLOW (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/463\"\u003e#463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/377f62251d7cdf30768cc9ee1eb31cea1551c71b\"\u003e\u003ccode\u003e377f622\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/460\"\u003e#460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/4724d7f8c3393ec1f048c93933e6e3e6ec321f0e\"\u003e\u003ccode\u003e4724d7f\u003c/code\u003e\u003c/a\u003e Fix TOCTOU symlink vulnerability in lock file creation (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/461\"\u003e#461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/cb69414a2327cf0a9887e12054d1dc112ee700af\"\u003e\u003ccode\u003ecb69414\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/459\"\u003e#459\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/0769294f14a6c62eea64741722f7acef5386b4cd\"\u003e\u003ccode\u003e0769294\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/458\"\u003e#458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/414193a188892bd376eb5c56eb45a9cf8ecc9284\"\u003e\u003ccode\u003e414193a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/457\"\u003e#457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/1456797beb94ad59e5627462ad29f7ed3a966626\"\u003e\u003ccode\u003e1456797\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/456\"\u003e#456\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/8d6bf90af313ac7fd6e41ef2b715d91dd6858f5c\"\u003e\u003ccode\u003e8d6bf90\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/455\"\u003e#455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.20.0...3.20.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `typing-extensions` from 4.12.2 to 4.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/typing_extensions/releases\"\u003etyping-extensions's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cp\u003eNo user-facing changes since 4.15.0rc1.\u003c/p\u003e\n\u003cp\u003eNew features since 4.14.1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.15.0rc1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.1\u003c/h2\u003e\n\u003ch1\u003eRelease 4.14.1 (July 4, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix usage of \u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e nested inside other types\n(e.g., \u003ccode\u003etyping.Type[typing_extensions.TypedDict]\u003c/code\u003e). This is not allowed by the\ntype system but worked on older versions, so we maintain support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.0\u003c/h2\u003e\n\u003cp\u003eThis release adds several new features, including experimental support for inline typed dictionaries (\u003ca href=\"https://peps.python.org/pep-0764/\"\u003ePEP 764\u003c/a\u003e) and sentinels (\u003ca href=\"https://peps.python.org/pep-0661/\"\u003ePEP 661\u003c/a\u003e), and support for changes in Python 3.14. In addition, Python 3.8 is no longer supported.\u003c/p\u003e\n\u003cp\u003eChanges since 4.14.0rc1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003e__or__\u003c/code\u003e and \u003ccode\u003e__ror__\u003c/code\u003e methods from \u003ccode\u003etyping_extensions.Sentinel\u003c/code\u003e\non Python versions \u0026lt;3.10. PEP 604 was introduced in Python 3.10, and\n\u003ccode\u003etyping_extensions\u003c/code\u003e does not generally attempt to backport PEP-604 methods\nto prior versions.\u003c/li\u003e\n\u003cli\u003eFurther update \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e with changes in Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanges included in 4.14.0rc1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8 (including PyPy-3.8). Patch by \u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eDo not attempt to re-export names that have been removed from \u003ccode\u003etyping\u003c/code\u003e,\nanticipating the removal of \u003ccode\u003etyping.no_type_check_decorator\u003c/code\u003e in Python 3.15.\nPatch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003etyping_extensions.Format\u003c/code\u003e, \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e, and\n\u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e to align\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/python/typing_extensions/blob/main/CHANGELOG.md\"\u003etyping-extensions's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 4.15.0 (August 25, 2025)\u003c/h1\u003e\n\u003cp\u003eNo user-facing changes since 4.15.0rc1.\u003c/p\u003e\n\u003ch1\u003eRelease 4.15.0rc1 (August 18, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.14.1 (July 4, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix usage of \u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e nested inside other types\n(e.g., \u003ccode\u003etyping.Type[typing_extensions.TypedDict]\u003c/code\u003e). This is not allowed by the\ntype system but worked on older versions, so we maintain support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.14.0 (June 2, 2025)\u003c/h1\u003e\n\u003cp\u003eChanges since 4.14.0rc1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003e__or__\u003c/code\u003e and \u003ccode\u003e__ror__\u003c/code\u003e methods from \u003ccode\u003etyping_extensions.Sentinel\u003c/code\u003e\non Python versions \u0026lt;3.10. PEP 604 was introduced in Python 3.10, and\n\u003ccode\u003etyping_extensions\u003c/code\u003e does not generally attempt to backport PEP-604 methods\nto prior versions.\u003c/li\u003e\n\u003cli\u003eFurther update \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e with changes in Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.14.0rc1 (May 24, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8 (including PyPy-3.8). Patch by \u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eDo not attempt to re-export names that have been removed from \u003ccode\u003etyping\u003c/code\u003e,\nanticipating the removal of \u003ccode\u003etyping.no_type_check_decorator\u003c/code\u003e in Python 3.15.\nPatch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003etyping_extensions.Format\u003c/code\u003e, \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e, and\n\u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e to align\nwith changes in Python 3.14. Patches by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eFix tests for Python 3.14 and 3.15. Patches by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for inline typed dictionaries (\u003ca href=\"https://peps.python.org/pep-0764/\"\u003ePEP 764\u003c/a\u003e).\nPatch by \u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.Reader\u003c/code\u003e and \u003ccode\u003etyping_extensions.Writer\u003c/code\u003e. Patch by\nSebastian Rittau.\u003c/li\u003e\n\u003cli\u003eAdd support for sentinels (\u003ca href=\"https://peps.python.org/pep-0661/\"\u003ePEP 661\u003c/a\u003e). Patch by\n\u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\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/python/typing_extensions/commit/9d1637e264b5c1a6b7acee3e907015f89b20c2c9\"\u003e\u003ccode\u003e9d1637e\u003c/code\u003e\u003c/a\u003e Prepare release 4.15.0 (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/4bd67c5be5d9443c7d33c314d02a56ee125eb88d\"\u003e\u003ccode\u003e4bd67c5\u003c/code\u003e\u003c/a\u003e Coverage: exclude some noise (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/656\"\u003e#656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/e589a26da73b075c5276bae40b86db1af0144f84\"\u003e\u003ccode\u003ee589a26\u003c/code\u003e\u003c/a\u003e Coverage: add detailed report to job summary (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/655\"\u003e#655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/67d37fed1298e050f74d5acc95b2621bd37837ad\"\u003e\u003ccode\u003e67d37fe\u003c/code\u003e\u003c/a\u003e Coverage: Implement fail_under (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/654\"\u003e#654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/e9ae26f5286edee9262727755ecb9ad16e999192\"\u003e\u003ccode\u003ee9ae26f\u003c/code\u003e\u003c/a\u003e Don't delete previous coverage comment (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/ac80bb728a3006fc88ef7373b92f0c25cfcc7895\"\u003e\u003ccode\u003eac80bb7\u003c/code\u003e\u003c/a\u003e Add Coverage workflow (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/623\"\u003e#623\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/abaaafd98c1cc7e5baf098ec287a3d22cb339670\"\u003e\u003ccode\u003eabaaafd\u003c/code\u003e\u003c/a\u003e Prepare release 4.15.0rc1 (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/650\"\u003e#650\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/98104053ea8d49bcdd247804e5fa9f73136acbd4\"\u003e\u003ccode\u003e9810405\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003e@disjoint_base\u003c/code\u003e (PEP 800) (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/634\"\u003e#634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/7ee9e05fd484d06899ce56e80f5e1aa4c760fc03\"\u003e\u003ccode\u003e7ee9e05\u003c/code\u003e\u003c/a\u003e Backport type_params fix from CPython (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/646\"\u003e#646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/1e8eb9c06ef51b3a1e1f05303a16feca13f5ed98\"\u003e\u003ccode\u003e1e8eb9c\u003c/code\u003e\u003c/a\u003e Do not refer to PEP 705 as being experimental (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/648\"\u003e#648\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/typing_extensions/compare/4.12.2...4.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `attrs` from 25.3.0 to 25.4.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/hynek/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env from FIFOs (Unix) by \u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) by \u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini by \u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory 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/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml by \u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv work reliably on python 3.13 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/pull/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\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 in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/552\"\u003etheskumar/python-dotenv#552\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/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.1] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove more config to \u003ccode\u003epyproject.toml\u003c/code\u003e, removed \u003ccode\u003esetup.cfg\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for reading \u003ccode\u003e.env\u003c/code\u003e from FIFOs (Unix) by [\u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.0] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade build system to use PEP 517 \u0026amp; PEP 518 to use \u003ccode\u003ebuild\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e by [\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/583\"\u003e#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by [\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for disabling of \u003ccode\u003eload_dotenv()\u003c/code\u003e using \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e env var. by [\u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/569\"\u003e#569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.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.11\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.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.11 (2025-10-12)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14, lowest supported version is Python 3.8.\u003c/li\u003e\n\u003cli\u003eVarious updates to packaging, including PEP 740 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ad949ee3052c2265c66e3df2dd8871a5832ba327\"\u003e\u003ccode\u003ead949ee\u003c/code\u003e\u003c/a\u003e Release v3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cae4ba779e0a543823894bd4136651c187944da8\"\u003e\u003ccode\u003ecae4ba7\u003c/code\u003e\u003c/a\u003e Second release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8adb305165c77c4a45d1568a70ead75d2197692c\"\u003e\u003ccode\u003e8adb305\u003c/code\u003e\u003c/a\u003e Add space in RST link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/74cb2b652bb06133b0c4ab52cc98221be63162cf\"\u003e\u003ccode\u003e74cb2b6\u003c/code\u003e\u003c/a\u003e Release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05dab09fdde5bbf7d52f757c4dc62e0ba934cca8\"\u003e\u003ccode\u003e05dab09\u003c/code\u003e\u003c/a\u003e Format idna-data with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/90eac78b737d26613776b490432fc6d926b15c55\"\u003e\u003ccode\u003e90eac78\u003c/code\u003e\u003c/a\u003e Apply ruff formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a31ce7ecc0b767e40abb5ce28744ac567b73f366\"\u003e\u003ccode\u003ea31ce7e\u003c/code\u003e\u003c/a\u003e Remove errant test vectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/81f03334211c78c1832991ce70ebafb3cbfbb79c\"\u003e\u003ccode\u003e81f0333\u003c/code\u003e\u003c/a\u003e Omit vectors known to be broken in test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a0f32578c0cac28c7ffbb4c860c92eb2b9b579bd\"\u003e\u003ccode\u003ea0f3257\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into unicode-16-uts46-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/38d98860e6a1ab92fd35ab09ea4739feabf339a3\"\u003e\u003ccode\u003e38d9886\u003c/code\u003e\u003c/a\u003e Remove extra UTS46 test vector\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.10...v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `h11` from 0.14.0 to 0.16.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/1c5b07581f058886c8bdd87adababd7d959dc7ca\"\u003e\u003ccode\u003e1c5b075\u003c/code\u003e\u003c/a\u003e this time for surer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/d9c369935e853a7ee1aeb7e481f6dddf9b9c9b8a\"\u003e\u003ccode\u003ed9c3699\u003c/code\u003e\u003c/a\u003e this time for sure...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/d91b9dd2290a25c8c3f5ec15feb57de5873e6e39\"\u003e\u003ccode\u003ed91b9dd\u003c/code\u003e\u003c/a\u003e blacken\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/5a4683ca466b59bbab9b19cfea20ee157b31cee0\"\u003e\u003ccode\u003e5a4683c\u003c/code\u003e\u003c/a\u003e Soothe mypy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/9c9567f0a92d13a83a8d8ebdbc757c8c2d384536\"\u003e\u003ccode\u003e9c9567f\u003c/code\u003e\u003c/a\u003e Bump version to 0.16.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/114803a29ce50116dc47951c690ad4892b1a36ed\"\u003e\u003ccode\u003e114803a\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/9462006f6ce4941661888228cbd4ac1ea80689b0\"\u003e\u003ccode\u003e9462006\u003c/code\u003e\u003c/a\u003e Bump versio...\n\n_Description has been truncated_","html_url":"https://github.com/prototyp33/barcelona-housing-demographics-analyzer/pull/269","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/prototyp33%2Fbarcelona-housing-demographics-analyzer/issues/269","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/269/packages"}},{"old_version":"0.22.2","new_version":"0.32.0","update_type":"minor","path":null,"pr_created_at":"2026-01-12T06:17:55.000Z","version_change":"0.22.2 → 0.32.0","issue":{"uuid":"3802922995","node_id":"PR_kwDOQh3VJ868oJAc","number":218,"state":"open","title":"chore(deps): bump the python-minor group with 21 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-12T06:17:55.000Z","updated_at":"2026-01-12T06:17:56.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor","update_count":21,"packages":[{"name":"fastapi","old_version":"0.104.1","new_version":"0.128.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.24.0","new_version":"0.40.0"},{"name":"pydantic","old_version":"2.5.0","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"python-dotenv","old_version":"1.0.0","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"httpx","old_version":"0.25.0","new_version":"0.28.1"},{"name":"trio","old_version":"0.22.2","new_version":"0.32.0","repository_url":"https://github.com/python-trio/trio"},{"name":"python-socks","old_version":"2.4.1","new_version":"2.8.0","repository_url":"https://github.com/romis2012/python-socks"},{"name":"python-jose","old_version":"3.3.0","new_version":"3.5.0"},{"name":"anthropic","old_version":"0.7.0","new_version":"0.75.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"torch","old_version":"2.2.0","new_version":"2.9.1","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.35.0","new_version":"4.57.3","repository_url":"https://github.com/huggingface/transformers"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"scikit-learn","old_version":"1.3.0","new_version":"1.7.2","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"shap","old_version":"0.44.1","new_version":"0.49.1","repository_url":"https://github.com/shap/shap"},{"name":"matplotlib","old_version":"3.7.3","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"sqlalchemy","old_version":"2.0.0","new_version":"2.0.45","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"alembic","old_version":"1.13.0","new_version":"1.18.0","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"requests","old_version":"2.31.0","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"beautifulsoup4","old_version":"4.12.0","new_version":"4.14.3"},{"name":"pyyaml","old_version":"6.0","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"streamlit","old_version":"1.28.0","new_version":"1.52.2","repository_url":"https://github.com/streamlit/streamlit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor group with 21 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.104.1` | `0.128.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.24.0` | `0.40.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.5.0` | `2.12.5` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.0` | `1.2.1` |\n| [httpx[socks]](https://github.com/encode/httpx) | `0.25.0` | `0.28.1` |\n| [trio](https://github.com/python-trio/trio) | `0.22.2` | `0.32.0` |\n| [python-socks](https://github.com/romis2012/python-socks) | `2.4.1` | `2.8.0` |\n| [python-jose[cryptography]](https://github.com/mpdavis/python-jose) | `3.3.0` | `3.5.0` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `0.7.0` | `0.75.0` |\n| [torch](https://github.com/pytorch/pytorch) | `2.2.0` | `2.9.1` |\n| [transformers](https://github.com/huggingface/transformers) | `4.35.0` | `4.57.3` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.3.0` | `1.7.2` |\n| [shap](https://github.com/shap/shap) | `0.44.1` | `0.49.1` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.7.3` | `3.10.8` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.0` | `2.0.45` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.13.0` | `1.18.0` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.32.5` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.12.0` | `4.14.3` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0` | `6.0.3` |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.28.0` | `1.52.2` |\n\nUpdates `fastapi` from 0.104.1 to 0.128.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.128.0\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for \u003ccode\u003epydantic.v1\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14609\"\u003e#14609\u003c/a\u003e by \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✅ Run performance tests only on Pydantic v2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14608\"\u003e#14608\u003c/a\u003e by \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.127.1\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔊 Add a custom \u003ccode\u003eFastAPIDeprecationWarning\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14605\"\u003e#14605\u003c/a\u003e by \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📝 Add documentary to website. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14600\"\u003e#14600\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14602\"\u003e#14602\u003c/a\u003e by \u003ca href=\"https://github.com/nilslindemann\"\u003e\u003ccode\u003e@​nilslindemann\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14581\"\u003e#14581\u003c/a\u003e by \u003ca href=\"https://github.com/nilslindemann\"\u003e\u003ccode\u003e@​nilslindemann\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🔧 Update pre-commit to use local Ruff instead of hook. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14604\"\u003e#14604\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 missing tests for code examples. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14569\"\u003e#14569\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 \u003ccode\u003elint\u003c/code\u003e job from \u003ccode\u003etest\u003c/code\u003e CI workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14593\"\u003e#14593\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Update secrets check. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14592\"\u003e#14592\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👷 Run CodSpeed tests in parallel to other tests to speed up CI. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14586\"\u003e#14586\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 scripts and pre-commit to autofix files. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14585\"\u003e#14585\u003c/a\u003e by \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.127.0\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔊 Add deprecation warnings when using \u003ccode\u003epydantic.v1\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14583\"\u003e#14583\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Add LLM prompt file for Korean, generated from the existing translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14546\"\u003e#14546\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 LLM prompt file for Japanese, generated from the existing translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14545\"\u003e#14545\u003c/a\u003e by \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 OpenAI model for translations to gpt-5.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14579\"\u003e#14579\u003c/a\u003e by \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.126.0\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Pydantic v1, keeping short temporary support for Pydantic v2's \u003ccode\u003epydantic.v1\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14575\"\u003e#14575\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8322a4445a3b25acd9b26b61192571b2d92f9bcd\"\u003e\u003ccode\u003e8322a44\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.128.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4b2cfcfd34d0b2e158a05b377426e0c8376b94de\"\u003e\u003ccode\u003e4b2cfcf\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e3006305518a56ea35f62a31748ad26fe4356fcc\"\u003e\u003ccode\u003ee300630\u003c/code\u003e\u003c/a\u003e ➖ Drop support for \u003ccode\u003epydantic.v1\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14609\"\u003e#14609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1b3bea8b6be2220cc1544653ea785d2134fcb35b\"\u003e\u003ccode\u003e1b3bea8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/34e884156f38dff4094a7764ff895c4d4b872060\"\u003e\u003ccode\u003e34e8841\u003c/code\u003e\u003c/a\u003e ✅ Run performance tests only on Pydantic v2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14608\"\u003e#14608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cd90c78391f86f3fd06d5b327bffad9666b05b44\"\u003e\u003ccode\u003ecd90c78\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.127.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/93f4dfd88b7d62bda89eb521ebd9322e357e6fff\"\u003e\u003ccode\u003e93f4dfd\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/535b5daa317a9d1d1f9a1058e57650a7beefa861\"\u003e\u003ccode\u003e535b5da\u003c/code\u003e\u003c/a\u003e 🔊 Add a custom \u003ccode\u003eFastAPIDeprecationWarning\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14605\"\u003e#14605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6b53786f626db95a42fd0f66afd360bab161f4b1\"\u003e\u003ccode\u003e6b53786\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d98f4eb56eae3155034fe631d9639d95171fb9ab\"\u003e\u003ccode\u003ed98f4eb\u003c/code\u003e\u003c/a\u003e 🔧 Update pre-commit to use local Ruff instead of hook (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14604\"\u003e#14604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.104.1...0.128.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn[standard]` from 0.24.0 to 0.40.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn[standard]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.40.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 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/2772\"\u003eKludex/uvicorn#2772\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.39.0...0.40.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.39.0...0.40.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.39.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eexplicitly start ASGI run with empty context by \u003ca href=\"https://github.com/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2742\"\u003eKludex/uvicorn#2742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(websockets): Send close frame on ASGI return by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2769\"\u003eKludex/uvicorn#2769\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2742\"\u003eKludex/uvicorn#2742\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.38.0...0.39.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.38.0...0.39.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.38.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14 by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2723\"\u003eKludex/uvicorn#2723\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NGANAMODEIJunior\"\u003e\u003ccode\u003e@​NGANAMODEIJunior\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2713\"\u003eKludex/uvicorn#2713\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.37.0...0.38.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.37.0...0.38.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.37.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--timeout-worker-healthcheck\u003c/code\u003e setting by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2711\"\u003eKludex/uvicorn#2711\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eos.PathLike[str]\u003c/code\u003e type to \u003ccode\u003essl_ca_certs\u003c/code\u003e by \u003ca href=\"https://github.com/rnv812\"\u003e\u003ccode\u003e@​rnv812\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2676\"\u003eKludex/uvicorn#2676\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LincolnPuzey\"\u003e\u003ccode\u003e@​LincolnPuzey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2669\"\u003eKludex/uvicorn#2669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rnv812\"\u003e\u003ccode\u003e@​rnv812\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2676\"\u003eKludex/uvicorn#2676\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.36.1...0.37.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.36.1...0.37.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.36.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRaise an exception when calling removed \u003ccode\u003eConfig.setup_event_loop()\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2709\"\u003eKludex/uvicorn#2709\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.36.0...0.36.1\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.36.0...0.36.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.36.0\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport custom IOLOOPs by \u003ca href=\"https://github.com/gnir-work\"\u003e\u003ccode\u003e@​gnir-work\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2435\"\u003eKludex/uvicorn#2435\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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[standard]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.40.0 (December 21, 2025)\u003c/h2\u003e\n\u003ch3\u003eRemove\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2772\"\u003e#2772\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.39.0 (December 21, 2025)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSend close frame on ASGI return for WebSockets (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2769\"\u003e#2769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExplicitly start ASGI run with empty context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2742\"\u003e#2742\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.38.0 (October 18, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2723\"\u003e#2723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.37.0 (September 23, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--timeout-worker-healthcheck\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2711\"\u003e#2711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eos.PathLike[str]\u003c/code\u003e type to \u003ccode\u003essl_ca_certs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2676\"\u003e#2676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.36.1 (September 23, 2025)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaise an exception when calling removed \u003ccode\u003eConfig.setup_event_loop()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2709\"\u003e#2709\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.36.0 (September 20, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport custom IOLOOPs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2435\"\u003e#2435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow to provide importable string in \u003ccode\u003e--http\u003c/code\u003e, \u003ccode\u003e--ws\u003c/code\u003e and \u003ccode\u003e--loop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2658\"\u003e#2658\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.35.0 (June 28, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eWebSocketsSansIOProtocol\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2540\"\u003e#2540\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefine help message for option \u003ccode\u003e--proxy-headers\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2653\"\u003e#2653\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.34.3 (June 1, 2025)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/9ff60042a53cd1bbfd5580ab0a91ea2d1d8f2f8c\"\u003e\u003ccode\u003e9ff6004\u003c/code\u003e\u003c/a\u003e Version 0.40.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2773\"\u003e#2773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/19df042c54c1562f058daf021d6f7bd1d5ed621c\"\u003e\u003ccode\u003e19df042\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2772\"\u003e#2772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/865ce7c0b4329a384273a6628eceb8d597989521\"\u003e\u003ccode\u003e865ce7c\u003c/code\u003e\u003c/a\u003e Run strict mypy on test suite (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2771\"\u003e#2771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4f40b8495772eb3a1ab3613ffd7be5156f8e1389\"\u003e\u003ccode\u003e4f40b84\u003c/code\u003e\u003c/a\u003e Version 0.39.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2770\"\u003e#2770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5692dfc416f9e65aee5028e55d119313d8d3ab0f\"\u003e\u003ccode\u003e5692dfc\u003c/code\u003e\u003c/a\u003e fix(websockets): Send close frame on ASGI return (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2769\"\u003e#2769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4194764a26824e5d8ddd1fa673df78dff82966e0\"\u003e\u003ccode\u003e4194764\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2763\"\u003e#2763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/d94bf28743de545d2d4b150f022203a5178cb705\"\u003e\u003ccode\u003ed94bf28\u003c/code\u003e\u003c/a\u003e explicitly start ASGI run with empty context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2742\"\u003e#2742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/8ae0bcbecb0a655789abf0c2dd4200848fc68a30\"\u003e\u003ccode\u003e8ae0bcb\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2748\"\u003e#2748\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4744ff9a1a4888c76ea160328cc9dcc2680c2c71\"\u003e\u003ccode\u003e4744ff9\u003c/code\u003e\u003c/a\u003e Add groups configuration for GitHub Actions (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2747\"\u003e#2747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/0391372376c264604a0475b0864bcbf3a8705352\"\u003e\u003ccode\u003e0391372\u003c/code\u003e\u003c/a\u003e chore(deps): bump astral-sh/setup-uv from 6.8.0 to 7.1.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2746\"\u003e#2746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.24.0...0.40.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.5.0 to 2.12.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.12.5 2025-11-26\u003c/h2\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.4 2025-11-05\u003c/h2\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required 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/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method of the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\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.12.3...v2.12.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.3 2025-10-17\u003c/h2\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the third 2.13 patch release, fixing issues related to the \u003ccode\u003eFieldInfo\u003c/code\u003e class, and reverting a change to the supported \u003ca href=\"https://docs.pydantic.dev/latest/concepts/validators/#model-validators\"\u003e\u003cem\u003eafter\u003c/em\u003e model validator\u003c/a\u003e function signatures.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required 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/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in\n\u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/bd2d0dd0137dfa1a8fdff2529b9dfb1547980150\"\u003e\u003ccode\u003ebd2d0dd\u003c/code\u003e\u003c/a\u003e Prepare release v2.12.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7d0302ec7ec2cf115de3450a615522875bdd8b56\"\u003e\u003ccode\u003e7d0302e\u003c/code\u003e\u003c/a\u003e Document security implications when using \u003ccode\u003ecreate_model()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e9ef980def726b6f59b6c495ddc9dc259a0228db\"\u003e\u003ccode\u003ee9ef980\u003c/code\u003e\u003c/a\u003e Fix typo in Standard Library Types documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f2c20c00c265a31a13c48f9bae923a87c829952e\"\u003e\u003ccode\u003ef2c20c0\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003epydantic-docs\u003c/code\u003e dev dependency, make use of versioning blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a76c1aa26f2d64a3fd080ac515d80832689197e8\"\u003e\u003ccode\u003ea76c1aa\u003c/code\u003e\u003c/a\u003e Update documentation about JSON Schema\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8cbc72ca489891e574fba45238ee8bd4f8e719a2\"\u003e\u003ccode\u003e8cbc72c\u003c/code\u003e\u003c/a\u003e Add documentation about custom \u003ccode\u003e__init__()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/99eba599069da137b3f708ffa74627f2b456ba73\"\u003e\u003ccode\u003e99eba59\u003c/code\u003e\u003c/a\u003e Add additional test for \u003ccode\u003eFieldInfo.get_default()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c71076988e507ea93844c77c3bf0bbb85a5716af\"\u003e\u003ccode\u003ec710769\u003c/code\u003e\u003c/a\u003e Special case \u003ccode\u003eMISSING\u003c/code\u003e sentinel in \u003ccode\u003esmart_deepcopy()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/20a9d771c210fd77d52366ac923258c4c199727f\"\u003e\u003ccode\u003e20a9d77\u003c/code\u003e\u003c/a\u003e Do not delete mock validator/serializer in \u003ccode\u003erebuild_dataclass()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c86515a3a8f2120148fab2eaedd3bc45925779d0\"\u003e\u003ccode\u003ec86515a\u003c/code\u003e\u003c/a\u003e Update parts of the model and \u003ccode\u003erevalidate_instances\u003c/code\u003e documentation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.5.0...v2.12.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.0.0 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env from FIFOs (Unix) by \u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) by \u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini by \u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory 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/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml by \u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv work reliably on python 3.13 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/pull/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\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 in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/552\"\u003etheskumar/python-dotenv#552\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/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.1] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove more config to \u003ccode\u003epyproject.toml\u003c/code\u003e, removed \u003ccode\u003esetup.cfg\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for reading \u003ccode\u003e.env\u003c/code\u003e from FIFOs (Unix) by [\u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.0] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade build system to use PEP 517 \u0026amp; PEP 518 to use \u003ccode\u003ebuild\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e by [\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/583\"\u003e#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by [\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for disabling of \u003ccode\u003eload_dotenv()\u003c/code\u003e using \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e env var. by [\u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/569\"\u003e#569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.0.1] - 2024-01-23\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGracefully handle code which has been imported from a zipfile (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/456\"\u003e#456\u003c/a\u003e by [\u003ca href=\"https://github.com/samwyma\"\u003e\u003ccode\u003e@​samwyma\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eAllow modules using \u003ccode\u003eload_dotenv\u003c/code\u003e to be reloaded when launched in a separate thread (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/497\"\u003e#497\u003c/a\u003e by [\u003ca href=\"https://github.com/freddyaboulton\"\u003e\u003ccode\u003e@​freddyaboulton\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eFix file not closed after deletion, handle error in the rewrite function (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/469\"\u003e#469\u003c/a\u003e by [\u003ca href=\"https://github.com/Qwerty-133\"\u003e\u003ccode\u003e@​Qwerty-133\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse pathlib.Path in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/466\"\u003e#466\u003c/a\u003e by [\u003ca href=\"https://github.com/eumiro\"\u003e\u003ccode\u003e@​eumiro\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eFix year in release date in changelog.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/454\"\u003e#454\u003c/a\u003e by [\u003ca href=\"https://github.com/jankislinger\"\u003e\u003ccode\u003e@​jankislinger\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eUse https in README links (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/474\"\u003e#474\u003c/a\u003e by [\u003ca href=\"https://github.com/Nicals\"\u003e\u003ccode\u003e@​Nicals\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/theskumar/python-dotenv/commit/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.0...v1.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httpx[socks]` from 0.25.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[socks]'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[socks]'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.25.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 `trio` from 0.22.2 to 0.32.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow \u003ccode\u003etrio.CapacityLimiter\u003c/code\u003e to have zero total_tokens. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3321\"\u003epython-trio/trio#3321\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where iterating over an \u003ccode\u003e@as_safe_channel\u003c/code\u003e-derived \u003ccode\u003eReceiveChannel\u003c/code\u003e would raise \u003ccode\u003etrio.BrokenResourceError\u003c/code\u003e if the channel was closed by another task. It now shuts down cleanly. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3331\"\u003epython-trio/trio#3331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etrio.lowlevel.Task.iter_await_frames\u003c/code\u003e now works on completed tasks, by returning an empty list of frames if the underlying coroutine has been closed. Previously, it raised an internal error. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3337\"\u003epython-trio/trio#3337\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals without deprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003epython-trio/trio#3345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDecrease indentation for exception groups raised in \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3332\"\u003epython-trio/trio#3332\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations and removals\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c0b394a55594dc39f353bae87e745083acff172e\"\u003e\u003ccode\u003ec0b394a\u003c/code\u003e\u003c/a\u003e Bump version to 0.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/95681199abcefe8ca1325e7e122f1005a56def7f\"\u003e\u003ccode\u003e9568119\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3348\"\u003e#3348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/f05398f17521e246dff608c6843f6970bcabc220\"\u003e\u003ccode\u003ef05398f\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/19196a83424dcce23f85bb7fc5dad73a4d943002\"\u003e\u003ccode\u003e19196a8\u003c/code\u003e\u003c/a\u003e Drop 3.9 support (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003e#3345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/bd3787fc766babe9a49ff2ca19c4627a642aee12\"\u003e\u003ccode\u003ebd3787f\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3347\"\u003e#3347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/43261ce646e3efda0620fc6cc0a38c850aeaf267\"\u003e\u003ccode\u003e43261ce\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3346\"\u003e#3346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/1425e7e5ea65e200a2bfe76756a38388a1981b83\"\u003e\u003ccode\u003e1425e7e\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3344\"\u003e#3344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/06e6f089225b2a34af9a03d3034a63f29416a9f4\"\u003e\u003ccode\u003e06e6f08\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/236a2094f239d42cb45db9975469e9eb9a5a77c7\"\u003e\u003ccode\u003e236a209\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/3ee08fe46826296e660722a8c57afa56eb242b11\"\u003e\u003ccode\u003e3ee08fe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/compare/v0.22.2...v0.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-socks` from 2.4.1 to 2.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/romis2012/python-socks/releases\"\u003epython-socks's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.8.0\u003c/h2\u003e\n\u003cp\u003eAdd \u003ccode\u003eProxyException\u003c/code\u003e base class\u003c/p\u003e\n\u003ch2\u003ev2.7.3\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.7.2\u003c/h2\u003e\n\u003cp\u003eAvoid leaking an open socket (trio) by \u003ca href=\"https://github.com/aaugustin\"\u003e\u003ccode\u003e@​aaugustin\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/romis2012/python-socks/issues/44\"\u003e#44\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003ev2.7.1\u003c/h2\u003e\n\u003cp\u003eClose socket on loop.sock_connect(...) error by \u003ca href=\"https://github.com/aaugustin\"\u003e\u003ccode\u003e@​aaugustin\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/romis2012/python-socks/issues/40\"\u003e#40\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003ev2.7.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.6.1\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.6.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.5.3\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.5.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.5.1\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.5.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.4.4\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.4.3\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.4.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\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/romis2012/python-socks/commit/50a3024a8ac10888085f963e44ab3a79d6574703\"\u003e\u003ccode\u003e50a3024\u003c/code\u003e\u003c/a\u003e Introduce ProxyException base class\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/0f573c4b35ef65c38e6ead5514e716e24820511c\"\u003e\u003ccode\u003e0f573c4\u003c/code\u003e\u003c/a\u003e Bump version, update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/053c2710c592a8580e8ef83cb920920cc7411f43\"\u003e\u003ccode\u003e053c271\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to test matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/b4e68da3204aa94559e5b3daafaabd131958283a\"\u003e\u003ccode\u003eb4e68da\u003c/code\u003e\u003c/a\u003e Update some dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/e769dba047ba30e4b323206da370119ab196e4a8\"\u003e\u003ccode\u003ee769dba\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/4555b273362327d3d150996aee849609706dd6aa\"\u003e\u003ccode\u003e4555b27\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/romis2012/python-socks/issues/44\"\u003e#44\u003c/a\u003e from aaugustin/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/5facc0e4f38e8f1e0bd9b8931e985a64a7e47dd6\"\u003e\u003ccode\u003e5facc0e\u003c/code\u003e\u003c/a\u003e Avoid leaking an open socket\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/8eb860cbb89c15d16cf94b99c842752ee90f3e0f\"\u003e\u003ccode\u003e8eb860c\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/2e4f5ca9fcb9e857c30ca8baa32f2190760e3490\"\u003e\u003ccode\u003e2e4f5ca\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/romis2012/python-socks/issues/40\"\u003e#40\u003c/a\u003e from aaugustin/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/f9454a5b36be776c8ce573d225ac519567e19152\"\u003e\u003ccode\u003ef9454a5\u003c/code\u003e\u003c/a\u003e Be more specific in exception catching\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/romis2012/python-socks/compare/v2.4.1...v2.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-jose[cryptography]` from 3.3.0 to 3.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mpdavis/python-jose/releases\"\u003epython-jose[cryptography]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.5.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.12 \u0026amp; 3.13\u003c/li\u003e\n\u003cli\u003eUpgrade to pyasn1 0.5.1+\u003c/li\u003e\n\u003cli\u003eUpgrade to pytest and other dependencies\u003c/li\u003e\n\u003cli\u003eAdd RTD config file to silence emailed deprecation warnings\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove get_random_bytes from cryptography backend\u003c/li\u003e\n\u003cli\u003eDo not use \u003ccode\u003eutc_now\u003c/code\u003e on module level\u003c/li\u003e\n\u003cli\u003eRemove key data (sensitive information) from JWKError exceptions\u003c/li\u003e\n\u003cli\u003eAdded possibility to call jwk.construct() with a private RSA key\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://pypi.org/project/python-jose/3.5.0/\"\u003ehttps://pypi.org/project/python-jose/3.5.0/\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.4.0\u003c/h2\u003e\n\u003ch3\u003eNews\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.6 and 3.7\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.10 and 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdating \u003ccode\u003eCryptographyAESKey::encrypt\u003c/code\u003e to generate 96 bit IVs for GCM block\ncipher mode\u003c/li\u003e\n\u003cli\u003eFix for PEM key comparisons caused by line lengths and new lines\u003c/li\u003e\n\u003cli\u003eFix for CVE-2024-33664 - JWE limited to 250KiB\u003c/li\u003e\n\u003cli\u003eFix for CVE-2024-33663 - signing JWT with public key is now forbidden\u003c/li\u003e\n\u003cli\u003eReplace usage of deprecated datetime.utcnow() with datetime.now(UTC)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHousekeeping\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Github Actions Workflows\u003c/li\u003e\n\u003cli\u003eUpdated to use tox 4.x\u003c/li\u003e\n\u003cli\u003eRevise codecov integration\u003c/li\u003e\n\u003cli\u003eFixed DeprecationWarnings\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/mpdavis/python-jose/blob/master/CHANGELOG.md\"\u003epython-jose[cryptography]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.5.0 -- 2025-05-28\u003c/h2\u003e\n\u003ch3\u003eNews\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.12 \u0026amp; 3.13\u003c/li\u003e\n\u003cli\u003eUpgrade to pyasn1 0.5.1+\u003c/li\u003e\n\u003cli\u003eUpgrade to pytest and other dependencies\u003c/li\u003e\n\u003cli\u003eAdd RTD config file to silence emailed deprecation warnings\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove get_random_bytes from cryptography backend\u003c/li\u003e\n\u003cli\u003eDo not use \u003ccode\u003eutc_now\u003c/code\u003e on module level\u003c/li\u003e\n\u003cli\u003eRemove key data (sensitive information) from JWKError exceptions\u003c/li\u003e\n\u003cli\u003eAdded possibility to call jwk.construct() with a private RSA key\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.4.0 -- 2025-02-14\u003c/h2\u003e\n\u003ch3\u003eNews\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.6 and 3.7\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.10 and 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdating \u003ccode\u003eCryptographyAESKey::encrypt\u003c/code\u003e to generate 96 bit IVs for GCM block\ncipher mode\u003c/li\u003e\n\u003cli\u003eFix for PEM key comparisons caused by line lengths and new lines\u003c/li\u003e\n\u003cli\u003eFix for CVE-2024-33664 - JWE limited to 250KiB\u003c/li\u003e\n\u003cli\u003eFix for CVE-2024-33663 - signing JWT with public key is now forbidden\u003c/li\u003e\n\u003cli\u003eReplace usage of deprecated datetime.utcnow() with datetime.now(UTC)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHousekeeping\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Github Actions Workflows\u003c/li\u003e\n\u003cli\u003eUpdated to use tox 4.x\u003c/li\u003e\n\u003cli\u003eRevise codecov integration\u003c/li\u003e\n\u003cli\u003eFixed DeprecationWarnings\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/mpdavis/python-jose/commit/018b310ddb8b50dcfd09a0c152117835a21dd656\"\u003e\u003ccode\u003e018b310\u003c/code\u003e\u003c/a\u003e Prepare release 3.5.0 (\u003ca href=\"https://redirect.github.com/mpdavis/python-jose/issues/388\"\u003e#388\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mpdavis/python-jose/commit/393c37476c728782dacc41cd79472627a5b198f3\"\u003e\u003ccode\u003e393c374\u003c/code\u003e\u003c/a\u003e Improve jwt.decode key doc (\u003ca href=\"https://redirect.github.com/mpdavis/python-jose/issues/198\"\u003e#198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mpdavis/python-jose/commit/50d43908ff5d3c6b48017c5d07b3b95c71ed89d9\"\u003e\u003ccode\u003e50d4390\u003c/code\u003e\u003c/a\u003e utils.py: fix types in docstrings for base64url_encode/decode (\u003ca href=\"https://redirect.github.com/mpdavis/python-jose/issues/269\"\u003e#269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mpdavis/python-jose/commit/8fd0b6318643edf9a7eee718d7f978fd04345e06\"\u003e\u003ccode\u003e8fd0b63\u003c/code\u003e\u003c/a\u003e Add RTD config file to silence emailed deprecation warnings (\u003ca href=\"https://redirect.github.com/mpdavis/python-jose/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://git...\n\n_Description has been truncated_","html_url":"https://github.com/JesseBrown1980/AI-healthCare-project/pull/218","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/JesseBrown1980%2FAI-healthCare-project/issues/218","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/218/packages"}},{"old_version":"0.22.2","new_version":"0.32.0","update_type":"minor","path":null,"pr_created_at":"2026-01-08T05:42:43.000Z","version_change":"0.22.2 → 0.32.0","issue":{"uuid":"3791355311","node_id":"PR_kwDOQh3VJ868CsKW","number":200,"state":"closed","title":"chore(deps): Bump the python-minor group with 21 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-01-11T00:07:47.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-08T05:42:43.000Z","updated_at":"2026-01-11T00:07:55.000Z","time_to_close":239104,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"python-minor","update_count":21,"packages":[{"name":"fastapi","old_version":"0.104.1","new_version":"0.128.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.24.0","new_version":"0.40.0"},{"name":"pydantic","old_version":"2.5.0","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"python-dotenv","old_version":"1.0.0","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"httpx","old_version":"0.25.0","new_version":"0.28.1"},{"name":"trio","old_version":"0.22.2","new_version":"0.32.0","repository_url":"https://github.com/python-trio/trio"},{"name":"python-socks","old_version":"2.4.1","new_version":"2.8.0","repository_url":"https://github.com/romis2012/python-socks"},{"name":"python-jose","old_version":"3.3.0","new_version":"3.5.0"},{"name":"anthropic","old_version":"0.7.0","new_version":"0.75.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"torch","old_version":"2.2.0","new_version":"2.9.1","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.35.0","new_version":"4.57.3","repository_url":"https://github.com/huggingface/transformers"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"scikit-learn","old_version":"1.3.0","new_version":"1.7.2","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"shap","old_version":"0.44.1","new_version":"0.49.1","repository_url":"https://github.com/shap/shap"},{"name":"matplotlib","old_version":"3.7.3","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"sqlalchemy","old_version":"2.0.0","new_version":"2.0.45","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"alembic","old_version":"1.13.0","new_version":"1.17.2","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"requests","old_version":"2.31.0","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"beautifulsoup4","old_version":"4.12.0","new_version":"4.14.3"},{"name":"pyyaml","old_version":"6.0","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"streamlit","old_version":"1.28.0","new_version":"1.52.2","repository_url":"https://github.com/streamlit/streamlit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor group with 21 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.104.1` | `0.128.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.24.0` | `0.40.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.5.0` | `2.12.5` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.0` | `1.2.1` |\n| [httpx[socks]](https://github.com/encode/httpx) | `0.25.0` | `0.28.1` |\n| [trio](https://github.com/python-trio/trio) | `0.22.2` | `0.32.0` |\n| [python-socks](https://github.com/romis2012/python-socks) | `2.4.1` | `2.8.0` |\n| [python-jose[cryptography]](https://github.com/mpdavis/python-jose) | `3.3.0` | `3.5.0` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `0.7.0` | `0.75.0` |\n| [torch](https://github.com/pytorch/pytorch) | `2.2.0` | `2.9.1` |\n| [transformers](https://github.com/huggingface/transformers) | `4.35.0` | `4.57.3` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.3.0` | `1.7.2` |\n| [shap](https://github.com/shap/shap) | `0.44.1` | `0.49.1` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.7.3` | `3.10.8` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.0` | `2.0.45` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.13.0` | `1.17.2` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.32.5` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.12.0` | `4.14.3` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0` | `6.0.3` |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.28.0` | `1.52.2` |\n\nUpdates `fastapi` from 0.104.1 to 0.128.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.128.0\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for \u003ccode\u003epydantic.v1\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14609\"\u003e#14609\u003c/a\u003e by \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✅ Run performance tests only on Pydantic v2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14608\"\u003e#14608\u003c/a\u003e by \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.127.1\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔊 Add a custom \u003ccode\u003eFastAPIDeprecationWarning\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14605\"\u003e#14605\u003c/a\u003e by \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📝 Add documentary to website. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14600\"\u003e#14600\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14602\"\u003e#14602\u003c/a\u003e by \u003ca href=\"https://github.com/nilslindemann\"\u003e\u003ccode\u003e@​nilslindemann\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14581\"\u003e#14581\u003c/a\u003e by \u003ca href=\"https://github.com/nilslindemann\"\u003e\u003ccode\u003e@​nilslindemann\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🔧 Update pre-commit to use local Ruff instead of hook. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14604\"\u003e#14604\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 missing tests for code examples. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14569\"\u003e#14569\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 \u003ccode\u003elint\u003c/code\u003e job from \u003ccode\u003etest\u003c/code\u003e CI workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14593\"\u003e#14593\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Update secrets check. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14592\"\u003e#14592\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👷 Run CodSpeed tests in parallel to other tests to speed up CI. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14586\"\u003e#14586\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 scripts and pre-commit to autofix files. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14585\"\u003e#14585\u003c/a\u003e by \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.127.0\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔊 Add deprecation warnings when using \u003ccode\u003epydantic.v1\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14583\"\u003e#14583\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Add LLM prompt file for Korean, generated from the existing translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14546\"\u003e#14546\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 LLM prompt file for Japanese, generated from the existing translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14545\"\u003e#14545\u003c/a\u003e by \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 OpenAI model for translations to gpt-5.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14579\"\u003e#14579\u003c/a\u003e by \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.126.0\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Pydantic v1, keeping short temporary support for Pydantic v2's \u003ccode\u003epydantic.v1\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14575\"\u003e#14575\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8322a4445a3b25acd9b26b61192571b2d92f9bcd\"\u003e\u003ccode\u003e8322a44\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.128.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4b2cfcfd34d0b2e158a05b377426e0c8376b94de\"\u003e\u003ccode\u003e4b2cfcf\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e3006305518a56ea35f62a31748ad26fe4356fcc\"\u003e\u003ccode\u003ee300630\u003c/code\u003e\u003c/a\u003e ➖ Drop support for \u003ccode\u003epydantic.v1\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14609\"\u003e#14609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1b3bea8b6be2220cc1544653ea785d2134fcb35b\"\u003e\u003ccode\u003e1b3bea8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/34e884156f38dff4094a7764ff895c4d4b872060\"\u003e\u003ccode\u003e34e8841\u003c/code\u003e\u003c/a\u003e ✅ Run performance tests only on Pydantic v2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14608\"\u003e#14608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cd90c78391f86f3fd06d5b327bffad9666b05b44\"\u003e\u003ccode\u003ecd90c78\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.127.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/93f4dfd88b7d62bda89eb521ebd9322e357e6fff\"\u003e\u003ccode\u003e93f4dfd\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/535b5daa317a9d1d1f9a1058e57650a7beefa861\"\u003e\u003ccode\u003e535b5da\u003c/code\u003e\u003c/a\u003e 🔊 Add a custom \u003ccode\u003eFastAPIDeprecationWarning\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14605\"\u003e#14605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6b53786f626db95a42fd0f66afd360bab161f4b1\"\u003e\u003ccode\u003e6b53786\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d98f4eb56eae3155034fe631d9639d95171fb9ab\"\u003e\u003ccode\u003ed98f4eb\u003c/code\u003e\u003c/a\u003e 🔧 Update pre-commit to use local Ruff instead of hook (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14604\"\u003e#14604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.104.1...0.128.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn[standard]` from 0.24.0 to 0.40.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn[standard]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.40.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 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/2772\"\u003eKludex/uvicorn#2772\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.39.0...0.40.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.39.0...0.40.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.39.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eexplicitly start ASGI run with empty context by \u003ca href=\"https://github.com/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2742\"\u003eKludex/uvicorn#2742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(websockets): Send close frame on ASGI return by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2769\"\u003eKludex/uvicorn#2769\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2742\"\u003eKludex/uvicorn#2742\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.38.0...0.39.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.38.0...0.39.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.38.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14 by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2723\"\u003eKludex/uvicorn#2723\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NGANAMODEIJunior\"\u003e\u003ccode\u003e@​NGANAMODEIJunior\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2713\"\u003eKludex/uvicorn#2713\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.37.0...0.38.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.37.0...0.38.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.37.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--timeout-worker-healthcheck\u003c/code\u003e setting by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2711\"\u003eKludex/uvicorn#2711\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eos.PathLike[str]\u003c/code\u003e type to \u003ccode\u003essl_ca_certs\u003c/code\u003e by \u003ca href=\"https://github.com/rnv812\"\u003e\u003ccode\u003e@​rnv812\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2676\"\u003eKludex/uvicorn#2676\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LincolnPuzey\"\u003e\u003ccode\u003e@​LincolnPuzey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2669\"\u003eKludex/uvicorn#2669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rnv812\"\u003e\u003ccode\u003e@​rnv812\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2676\"\u003eKludex/uvicorn#2676\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.36.1...0.37.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.36.1...0.37.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.36.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRaise an exception when calling removed \u003ccode\u003eConfig.setup_event_loop()\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2709\"\u003eKludex/uvicorn#2709\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.36.0...0.36.1\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.36.0...0.36.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.36.0\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport custom IOLOOPs by \u003ca href=\"https://github.com/gnir-work\"\u003e\u003ccode\u003e@​gnir-work\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2435\"\u003eKludex/uvicorn#2435\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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[standard]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.40.0 (December 21, 2025)\u003c/h2\u003e\n\u003ch3\u003eRemove\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2772\"\u003e#2772\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.39.0 (December 21, 2025)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSend close frame on ASGI return for WebSockets (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2769\"\u003e#2769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExplicitly start ASGI run with empty context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2742\"\u003e#2742\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.38.0 (October 18, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2723\"\u003e#2723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.37.0 (September 23, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--timeout-worker-healthcheck\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2711\"\u003e#2711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eos.PathLike[str]\u003c/code\u003e type to \u003ccode\u003essl_ca_certs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2676\"\u003e#2676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.36.1 (September 23, 2025)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaise an exception when calling removed \u003ccode\u003eConfig.setup_event_loop()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2709\"\u003e#2709\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.36.0 (September 20, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport custom IOLOOPs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2435\"\u003e#2435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow to provide importable string in \u003ccode\u003e--http\u003c/code\u003e, \u003ccode\u003e--ws\u003c/code\u003e and \u003ccode\u003e--loop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2658\"\u003e#2658\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.35.0 (June 28, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eWebSocketsSansIOProtocol\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2540\"\u003e#2540\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefine help message for option \u003ccode\u003e--proxy-headers\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2653\"\u003e#2653\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.34.3 (June 1, 2025)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/9ff60042a53cd1bbfd5580ab0a91ea2d1d8f2f8c\"\u003e\u003ccode\u003e9ff6004\u003c/code\u003e\u003c/a\u003e Version 0.40.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2773\"\u003e#2773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/19df042c54c1562f058daf021d6f7bd1d5ed621c\"\u003e\u003ccode\u003e19df042\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2772\"\u003e#2772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/865ce7c0b4329a384273a6628eceb8d597989521\"\u003e\u003ccode\u003e865ce7c\u003c/code\u003e\u003c/a\u003e Run strict mypy on test suite (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2771\"\u003e#2771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4f40b8495772eb3a1ab3613ffd7be5156f8e1389\"\u003e\u003ccode\u003e4f40b84\u003c/code\u003e\u003c/a\u003e Version 0.39.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2770\"\u003e#2770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5692dfc416f9e65aee5028e55d119313d8d3ab0f\"\u003e\u003ccode\u003e5692dfc\u003c/code\u003e\u003c/a\u003e fix(websockets): Send close frame on ASGI return (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2769\"\u003e#2769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4194764a26824e5d8ddd1fa673df78dff82966e0\"\u003e\u003ccode\u003e4194764\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2763\"\u003e#2763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/d94bf28743de545d2d4b150f022203a5178cb705\"\u003e\u003ccode\u003ed94bf28\u003c/code\u003e\u003c/a\u003e explicitly start ASGI run with empty context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2742\"\u003e#2742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/8ae0bcbecb0a655789abf0c2dd4200848fc68a30\"\u003e\u003ccode\u003e8ae0bcb\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2748\"\u003e#2748\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4744ff9a1a4888c76ea160328cc9dcc2680c2c71\"\u003e\u003ccode\u003e4744ff9\u003c/code\u003e\u003c/a\u003e Add groups configuration for GitHub Actions (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2747\"\u003e#2747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/0391372376c264604a0475b0864bcbf3a8705352\"\u003e\u003ccode\u003e0391372\u003c/code\u003e\u003c/a\u003e chore(deps): bump astral-sh/setup-uv from 6.8.0 to 7.1.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2746\"\u003e#2746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.24.0...0.40.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.5.0 to 2.12.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.12.5 2025-11-26\u003c/h2\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.4 2025-11-05\u003c/h2\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required 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/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method of the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\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.12.3...v2.12.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.3 2025-10-17\u003c/h2\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the third 2.13 patch release, fixing issues related to the \u003ccode\u003eFieldInfo\u003c/code\u003e class, and reverting a change to the supported \u003ca href=\"https://docs.pydantic.dev/latest/concepts/validators/#model-validators\"\u003e\u003cem\u003eafter\u003c/em\u003e model validator\u003c/a\u003e function signatures.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required 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/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in\n\u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/bd2d0dd0137dfa1a8fdff2529b9dfb1547980150\"\u003e\u003ccode\u003ebd2d0dd\u003c/code\u003e\u003c/a\u003e Prepare release v2.12.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7d0302ec7ec2cf115de3450a615522875bdd8b56\"\u003e\u003ccode\u003e7d0302e\u003c/code\u003e\u003c/a\u003e Document security implications when using \u003ccode\u003ecreate_model()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e9ef980def726b6f59b6c495ddc9dc259a0228db\"\u003e\u003ccode\u003ee9ef980\u003c/code\u003e\u003c/a\u003e Fix typo in Standard Library Types documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f2c20c00c265a31a13c48f9bae923a87c829952e\"\u003e\u003ccode\u003ef2c20c0\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003epydantic-docs\u003c/code\u003e dev dependency, make use of versioning blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a76c1aa26f2d64a3fd080ac515d80832689197e8\"\u003e\u003ccode\u003ea76c1aa\u003c/code\u003e\u003c/a\u003e Update documentation about JSON Schema\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8cbc72ca489891e574fba45238ee8bd4f8e719a2\"\u003e\u003ccode\u003e8cbc72c\u003c/code\u003e\u003c/a\u003e Add documentation about custom \u003ccode\u003e__init__()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/99eba599069da137b3f708ffa74627f2b456ba73\"\u003e\u003ccode\u003e99eba59\u003c/code\u003e\u003c/a\u003e Add additional test for \u003ccode\u003eFieldInfo.get_default()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c71076988e507ea93844c77c3bf0bbb85a5716af\"\u003e\u003ccode\u003ec710769\u003c/code\u003e\u003c/a\u003e Special case \u003ccode\u003eMISSING\u003c/code\u003e sentinel in \u003ccode\u003esmart_deepcopy()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/20a9d771c210fd77d52366ac923258c4c199727f\"\u003e\u003ccode\u003e20a9d77\u003c/code\u003e\u003c/a\u003e Do not delete mock validator/serializer in \u003ccode\u003erebuild_dataclass()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c86515a3a8f2120148fab2eaedd3bc45925779d0\"\u003e\u003ccode\u003ec86515a\u003c/code\u003e\u003c/a\u003e Update parts of the model and \u003ccode\u003erevalidate_instances\u003c/code\u003e documentation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.5.0...v2.12.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.0.0 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env from FIFOs (Unix) by \u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) by \u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini by \u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory 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/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml by \u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv work reliably on python 3.13 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/pull/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\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 in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/552\"\u003etheskumar/python-dotenv#552\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/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.1] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove more config to \u003ccode\u003epyproject.toml\u003c/code\u003e, removed \u003ccode\u003esetup.cfg\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for reading \u003ccode\u003e.env\u003c/code\u003e from FIFOs (Unix) by [\u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.0] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade build system to use PEP 517 \u0026amp; PEP 518 to use \u003ccode\u003ebuild\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e by [\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/583\"\u003e#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by [\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for disabling of \u003ccode\u003eload_dotenv()\u003c/code\u003e using \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e env var. by [\u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/569\"\u003e#569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.0.1] - 2024-01-23\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGracefully handle code which has been imported from a zipfile (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/456\"\u003e#456\u003c/a\u003e by [\u003ca href=\"https://github.com/samwyma\"\u003e\u003ccode\u003e@​samwyma\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eAllow modules using \u003ccode\u003eload_dotenv\u003c/code\u003e to be reloaded when launched in a separate thread (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/497\"\u003e#497\u003c/a\u003e by [\u003ca href=\"https://github.com/freddyaboulton\"\u003e\u003ccode\u003e@​freddyaboulton\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eFix file not closed after deletion, handle error in the rewrite function (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/469\"\u003e#469\u003c/a\u003e by [\u003ca href=\"https://github.com/Qwerty-133\"\u003e\u003ccode\u003e@​Qwerty-133\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse pathlib.Path in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/466\"\u003e#466\u003c/a\u003e by [\u003ca href=\"https://github.com/eumiro\"\u003e\u003ccode\u003e@​eumiro\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eFix year in release date in changelog.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/454\"\u003e#454\u003c/a\u003e by [\u003ca href=\"https://github.com/jankislinger\"\u003e\u003ccode\u003e@​jankislinger\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eUse https in README links (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/474\"\u003e#474\u003c/a\u003e by [\u003ca href=\"https://github.com/Nicals\"\u003e\u003ccode\u003e@​Nicals\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/theskumar/python-dotenv/commit/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.0...v1.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httpx[socks]` from 0.25.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[socks]'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[socks]'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.25.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 `trio` from 0.22.2 to 0.32.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow \u003ccode\u003etrio.CapacityLimiter\u003c/code\u003e to have zero total_tokens. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3321\"\u003epython-trio/trio#3321\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where iterating over an \u003ccode\u003e@as_safe_channel\u003c/code\u003e-derived \u003ccode\u003eReceiveChannel\u003c/code\u003e would raise \u003ccode\u003etrio.BrokenResourceError\u003c/code\u003e if the channel was closed by another task. It now shuts down cleanly. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3331\"\u003epython-trio/trio#3331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etrio.lowlevel.Task.iter_await_frames\u003c/code\u003e now works on completed tasks, by returning an empty list of frames if the underlying coroutine has been closed. Previously, it raised an internal error. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3337\"\u003epython-trio/trio#3337\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals without deprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003epython-trio/trio#3345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDecrease indentation for exception groups raised in \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3332\"\u003epython-trio/trio#3332\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations and removals\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c0b394a55594dc39f353bae87e745083acff172e\"\u003e\u003ccode\u003ec0b394a\u003c/code\u003e\u003c/a\u003e Bump version to 0.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/95681199abcefe8ca1325e7e122f1005a56def7f\"\u003e\u003ccode\u003e9568119\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3348\"\u003e#3348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/f05398f17521e246dff608c6843f6970bcabc220\"\u003e\u003ccode\u003ef05398f\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/19196a83424dcce23f85bb7fc5dad73a4d943002\"\u003e\u003ccode\u003e19196a8\u003c/code\u003e\u003c/a\u003e Drop 3.9 support (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003e#3345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/bd3787fc766babe9a49ff2ca19c4627a642aee12\"\u003e\u003ccode\u003ebd3787f\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3347\"\u003e#3347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/43261ce646e3efda0620fc6cc0a38c850aeaf267\"\u003e\u003ccode\u003e43261ce\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3346\"\u003e#3346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/1425e7e5ea65e200a2bfe76756a38388a1981b83\"\u003e\u003ccode\u003e1425e7e\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3344\"\u003e#3344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/06e6f089225b2a34af9a03d3034a63f29416a9f4\"\u003e\u003ccode\u003e06e6f08\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/236a2094f239d42cb45db9975469e9eb9a5a77c7\"\u003e\u003ccode\u003e236a209\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/3ee08fe46826296e660722a8c57afa56eb242b11\"\u003e\u003ccode\u003e3ee08fe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/compare/v0.22.2...v0.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-socks` from 2.4.1 to 2.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/romis2012/python-socks/releases\"\u003epython-socks's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.8.0\u003c/h2\u003e\n\u003cp\u003eAdd \u003ccode\u003eProxyException\u003c/code\u003e base class\u003c/p\u003e\n\u003ch2\u003ev2.7.3\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.7.2\u003c/h2\u003e\n\u003cp\u003eAvoid leaking an open socket (trio) by \u003ca href=\"https://github.com/aaugustin\"\u003e\u003ccode\u003e@​aaugustin\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/romis2012/python-socks/issues/44\"\u003e#44\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003ev2.7.1\u003c/h2\u003e\n\u003cp\u003eClose socket on loop.sock_connect(...) error by \u003ca href=\"https://github.com/aaugustin\"\u003e\u003ccode\u003e@​aaugustin\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/romis2012/python-socks/issues/40\"\u003e#40\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003ev2.7.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.6.1\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.6.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.5.3\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.5.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.5.1\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.5.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.4.4\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.4.3\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.4.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\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/romis2012/python-socks/commit/50a3024a8ac10888085f963e44ab3a79d6574703\"\u003e\u003ccode\u003e50a3024\u003c/code\u003e\u003c/a\u003e Introduce ProxyException base class\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/0f573c4b35ef65c38e6ead5514e716e24820511c\"\u003e\u003ccode\u003e0f573c4\u003c/code\u003e\u003c/a\u003e Bump version, update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/053c2710c592a8580e8ef83cb920920cc7411f43\"\u003e\u003ccode\u003e053c271\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to test matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/b4e68da3204aa94559e5b3daafaabd131958283a\"\u003e\u003ccode\u003eb4e68da\u003c/code\u003e\u003c/a\u003e Update some dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/e769dba047ba30e4b323206da370119ab196e4a8\"\u003e\u003ccode\u003ee769dba\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/4555b273362327d3d150996aee849609706dd6aa\"\u003e\u003ccode\u003e4555b27\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/romis2012/python-socks/issues/44\"\u003e#44\u003c/a\u003e from aaugustin/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/5facc0e4f38e8f1e0bd9b8931e985a64a7e47dd6\"\u003e\u003ccode\u003e5facc0e\u003c/code\u003e\u003c/a\u003e Avoid leaking an open socket\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/8eb860cbb89c15d16cf94b99c842752ee90f3e0f\"\u003e\u003ccode\u003e8eb860c\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/2e4f5ca9fcb9e857c30ca8baa32f2190760e3490\"\u003e\u003ccode\u003e2e4f5ca\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/romis2012/python-socks/issues/40\"\u003e#40\u003c/a\u003e from aaugustin/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romis2012/python-socks/commit/f9454a5b36be776c8ce573d225ac519567e19152\"\u003e\u003ccode\u003ef9454a5\u003c/code\u003e\u003c/a\u003e Be more specific in exception catching\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/romis2012/python-socks/compare/v2.4.1...v2.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-jose[cryptography]` from 3.3.0 to 3.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mpdavis/python-jose/releases\"\u003epython-jose[cryptography]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.5.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.12 \u0026amp; 3.13\u003c/li\u003e\n\u003cli\u003eUpgrade to pyasn1 0.5.1+\u003c/li\u003e\n\u003cli\u003eUpgrade to pytest and other dependencies\u003c/li\u003e\n\u003cli\u003eAdd RTD config file to silence emailed deprecation warnings\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove get_random_bytes from cryptography backend\u003c/li\u003e\n\u003cli\u003eDo not use \u003ccode\u003eutc_now\u003c/code\u003e on module level\u003c/li\u003e\n\u003cli\u003eRemove key data (sensitive information) from JWKError exceptions\u003c/li\u003e\n\u003cli\u003eAdded possibility to call jwk.construct() with a private RSA key\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://pypi.org/project/python-jose/3.5.0/\"\u003ehttps://pypi.org/project/python-jose/3.5.0/\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.4.0\u003c/h2\u003e\n\u003ch3\u003eNews\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.6 and 3.7\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.10 and 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdating \u003ccode\u003eCryptographyAESKey::encrypt\u003c/code\u003e to generate 96 bit IVs for GCM block\ncipher mode\u003c/li\u003e\n\u003cli\u003eFix for PEM key comparisons caused by line lengths and new lines\u003c/li\u003e\n\u003cli\u003eFix for CVE-2024-33664 - JWE limited to 250KiB\u003c/li\u003e\n\u003cli\u003eFix for CVE-2024-33663 - signing JWT with public key is now forbidden\u003c/li\u003e\n\u003cli\u003eReplace usage of deprecated datetime.utcnow() with datetime.now(UTC)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHousekeeping\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Github Actions Workflows\u003c/li\u003e\n\u003cli\u003eUpdated to use tox 4.x\u003c/li\u003e\n\u003cli\u003eRevise codecov integration\u003c/li\u003e\n\u003cli\u003eFixed DeprecationWarnings\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/mpdavis/python-jose/blob/master/CHANGELOG.md\"\u003epython-jose[cryptography]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.5.0 -- 2025-05-28\u003c/h2\u003e\n\u003ch3\u003eNews\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.12 \u0026amp; 3.13\u003c/li\u003e\n\u003cli\u003eUpgrade to pyasn1 0.5.1+\u003c/li\u003e\n\u003cli\u003eUpgrade to pytest and other dependencies\u003c/li\u003e\n\u003cli\u003eAdd RTD config file to silence emailed deprecation warnings\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove get_random_bytes from cryptography backend\u003c/li\u003e\n\u003cli\u003eDo not use \u003ccode\u003eutc_now\u003c/code\u003e on module level\u003c/li\u003e\n\u003cli\u003eRemove key data (sensitive information) from JWKError exceptions\u003c/li\u003e\n\u003cli\u003eAdded possibility to call jwk.construct() with a private RSA key\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.4.0 -- 2025-02-14\u003c/h2\u003e\n\u003ch3\u003eNews\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.6 and 3.7\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.10 and 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdating \u003ccode\u003eCryptographyAESKey::encrypt\u003c/code\u003e to generate 96 bit IVs for GCM block\ncipher mode\u003c/li\u003e\n\u003cli\u003eFix for PEM key comparisons caused by line lengths and new lines\u003c/li\u003e\n\u003cli\u003eFix for CVE-2024-33664 - JWE limited to 250KiB\u003c/li\u003e\n\u003cli\u003eFix for CVE-2024-33663 - signing JWT with public key is now forbidden\u003c/li\u003e\n\u003cli\u003eReplace usage of deprecated datetime.utcnow() with datetime.now(UTC)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHousekeeping\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Github Actions Workflows\u003c/li\u003e\n\u003cli\u003eUpdated to use tox 4.x\u003c/li\u003e\n\u003cli\u003eRevise codecov integration\u003c/li\u003e\n\u003cli\u003eFixed DeprecationWarnings\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/mpdavis/python-jose/commit/018b310ddb8b50dcfd09a0c152117835a21dd656\"\u003e\u003ccode\u003e018b310\u003c/code\u003e\u003c/a\u003e Prepare release 3.5.0 (\u003ca href=\"https://redirect.github.com/mpdavis/python-jose/issues/388\"\u003e#388\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mpdavis/python-jose/commit/393c37476c728782dacc41cd79472627a5b198f3\"\u003e\u003ccode\u003e393c374\u003c/code\u003e\u003c/a\u003e Improve jwt.decode key doc (\u003ca href=\"https://redirect.github.com/mpdavis/python-jose/issues/198\"\u003e#198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mpdavis/python-jose/commit/50d43908ff5d3c6b48017c5d07b3b95c71ed89d9\"\u003e\u003ccode\u003e50d4390\u003c/code\u003e\u003c/a\u003e utils.py: fix types in docstrings for base64url_encode/decode (\u003ca href=\"https://redirect.github.com/mpdavis/python-jose/issues/269\"\u003e#269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mpdavis/python-jose/commit/8fd0b6318643edf9a7eee718d7f978fd04345e06\"\u003e\u003ccode\u003e8fd0b63\u003c/code\u003e\u003c/a\u003e Add RTD config file to silence emailed deprecation warnings (\u003ca href=\"https://redirect.github.com/mpdavis/python-jose/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://git...\n\n_Description has been truncated_","html_url":"https://github.com/JesseBrown1980/AI-healthCare-project/pull/200","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/JesseBrown1980%2FAI-healthCare-project/issues/200","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/200/packages"}},{"old_version":"0.23.2","new_version":"0.32.0","update_type":"minor","path":"/packages/afo-core","pr_created_at":"2026-01-01T17:56:04.000Z","version_change":"0.23.2 → 0.32.0","issue":{"uuid":"3774965870","node_id":"PR_kwDOQqqBcM67N3hF","number":28,"state":"open","title":"chore(deps)(deps-dev): bump trio from 0.23.2 to 0.32.0 in /packages/afo-core","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":8,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-01T17:56:04.000Z","updated_at":"2026-01-10T08:00:32.375Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps-dev)","packages":[{"name":"trio","old_version":"0.23.2","new_version":"0.32.0","repository_url":"https://github.com/python-trio/trio"}],"path":"/packages/afo-core","ecosystem":"pip"},"body":"Bumps [trio](https://github.com/python-trio/trio) from 0.23.2 to 0.32.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow \u003ccode\u003etrio.CapacityLimiter\u003c/code\u003e to have zero total_tokens. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3321\"\u003epython-trio/trio#3321\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where iterating over an \u003ccode\u003e@as_safe_channel\u003c/code\u003e-derived \u003ccode\u003eReceiveChannel\u003c/code\u003e would raise \u003ccode\u003etrio.BrokenResourceError\u003c/code\u003e if the channel was closed by another task. It now shuts down cleanly. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3331\"\u003epython-trio/trio#3331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etrio.lowlevel.Task.iter_await_frames\u003c/code\u003e now works on completed tasks, by returning an empty list of frames if the underlying coroutine has been closed. Previously, it raised an internal error. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3337\"\u003epython-trio/trio#3337\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals without deprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003epython-trio/trio#3345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDecrease indentation for exception groups raised in \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3332\"\u003epython-trio/trio#3332\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations and removals\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c0b394a55594dc39f353bae87e745083acff172e\"\u003e\u003ccode\u003ec0b394a\u003c/code\u003e\u003c/a\u003e Bump version to 0.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/95681199abcefe8ca1325e7e122f1005a56def7f\"\u003e\u003ccode\u003e9568119\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3348\"\u003e#3348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/f05398f17521e246dff608c6843f6970bcabc220\"\u003e\u003ccode\u003ef05398f\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/19196a83424dcce23f85bb7fc5dad73a4d943002\"\u003e\u003ccode\u003e19196a8\u003c/code\u003e\u003c/a\u003e Drop 3.9 support (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003e#3345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/bd3787fc766babe9a49ff2ca19c4627a642aee12\"\u003e\u003ccode\u003ebd3787f\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3347\"\u003e#3347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/43261ce646e3efda0620fc6cc0a38c850aeaf267\"\u003e\u003ccode\u003e43261ce\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3346\"\u003e#3346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/1425e7e5ea65e200a2bfe76756a38388a1981b83\"\u003e\u003ccode\u003e1425e7e\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3344\"\u003e#3344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/06e6f089225b2a34af9a03d3034a63f29416a9f4\"\u003e\u003ccode\u003e06e6f08\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/236a2094f239d42cb45db9975469e9eb9a5a77c7\"\u003e\u003ccode\u003e236a209\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/3ee08fe46826296e660722a8c57afa56eb242b11\"\u003e\u003ccode\u003e3ee08fe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/compare/v0.23.2...v0.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trio\u0026package-manager=pip\u0026previous-version=0.23.2\u0026new-version=0.32.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\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/lofibrainwav/AFO_Kingdom/pull/28","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/lofibrainwav%2FAFO_Kingdom/issues/28","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/28/packages"}},{"old_version":"0.31.0","new_version":"0.32.0","update_type":"minor","path":null,"pr_created_at":"2025-12-28T20:50:16.000Z","version_change":"0.31.0 → 0.32.0","issue":{"uuid":"3765997268","node_id":"PR_kwDOCsSJAc66wSpb","number":73,"state":"open","title":"Bump the python-dependencies group with 20 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-12-28T20:50:16.000Z","updated_at":"2025-12-28T20:51:01.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-dependencies","update_count":20,"packages":[{"name":"cachetools","old_version":"6.2.1","new_version":"6.2.4","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.10.5","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"click","old_version":"8.3.0","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"flask-socketio","old_version":"5.5.1","new_version":"5.6.0","repository_url":"https://github.com/miguelgrinberg/flask-socketio"},{"name":"python-engineio","old_version":"4.12.3","new_version":"4.13.0","repository_url":"https://github.com/miguelgrinberg/python-engineio"},{"name":"python-socketio","old_version":"5.14.2","new_version":"5.16.0","repository_url":"https://github.com/miguelgrinberg/python-socketio"},{"name":"urllib3","old_version":"2.6.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"wsproto","old_version":"1.2.0","new_version":"1.3.2","repository_url":"https://github.com/python-hyper/wsproto"},{"name":"black","old_version":"25.9.0","new_version":"25.12.0","repository_url":"https://github.com/psf/black"},{"name":"cfgv","old_version":"3.4.0","new_version":"3.5.0","repository_url":"https://github.com/asottile/cfgv"},{"name":"cucumber-tag-expressions","old_version":"8.0.0","new_version":"8.1.0","repository_url":"https://github.com/cucumber/tag-expressions"},{"name":"nodeenv","old_version":"1.9.1","new_version":"1.10.0","repository_url":"https://github.com/ekalinin/nodeenv"},{"name":"platformdirs","old_version":"4.5.0","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pre-commit","old_version":"4.0.1","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest","old_version":"8.4.2","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.0.0","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytokens","old_version":"0.2.0","new_version":"0.3.0","repository_url":"https://github.com/tusharsadhwani/pytokens"},{"name":"selenium","old_version":"4.37.0","new_version":"4.39.0","repository_url":"https://github.com/SeleniumHQ/Selenium"},{"name":"trio","old_version":"0.31.0","new_version":"0.32.0","repository_url":"https://github.com/python-trio/trio"},{"name":"virtualenv","old_version":"20.35.3","new_version":"20.35.4","repository_url":"https://github.com/pypa/virtualenv"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 20 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [cachetools](https://github.com/tkem/cachetools) | `6.2.1` | `6.2.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.10.5` | `2025.11.12` |\n| [click](https://github.com/pallets/click) | `8.3.0` | `8.3.1` |\n| [flask-socketio](https://github.com/miguelgrinberg/flask-socketio) | `5.5.1` | `5.6.0` |\n| [python-engineio](https://github.com/miguelgrinberg/python-engineio) | `4.12.3` | `4.13.0` |\n| [python-socketio](https://github.com/miguelgrinberg/python-socketio) | `5.14.2` | `5.16.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.6.0` | `2.6.2` |\n| [wsproto](https://github.com/python-hyper/wsproto) | `1.2.0` | `1.3.2` |\n| [black](https://github.com/psf/black) | `25.9.0` | `25.12.0` |\n| [cfgv](https://github.com/asottile/cfgv) | `3.4.0` | `3.5.0` |\n| [cucumber-tag-expressions](https://github.com/cucumber/tag-expressions) | `8.0.0` | `8.1.0` |\n| [nodeenv](https://github.com/ekalinin/nodeenv) | `1.9.1` | `1.10.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.5.0` | `4.5.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.0.1` | `4.5.1` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.2` | `9.0.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.0.0` | `7.0.0` |\n| [pytokens](https://github.com/tusharsadhwani/pytokens) | `0.2.0` | `0.3.0` |\n| [selenium](https://github.com/SeleniumHQ/Selenium) | `4.37.0` | `4.39.0` |\n| [trio](https://github.com/python-trio/trio) | `0.31.0` | `0.32.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.35.3` | `20.35.4` |\n\nUpdates `cachetools` from 6.2.1 to 6.2.4\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\u003ev6.2.4 (2025-12-15)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix license information displayed on PyPI be using an updated\nversion of \u003ccode\u003etwine\u003c/code\u003e for uploading.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.2.3 (2025-12-12)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove documentation regarding \u003ccode\u003e@cachedmethod\u003c/code\u003e with \u003ccode\u003econdition\u003c/code\u003e\nparameter.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinor style and readability improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eModernize build environment.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate CI environment.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.2.2 (2025-11-13)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMinor improvements from GitHub Copilot code review.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove documentation.\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/tkem/cachetools/commit/9983ef8bd76758707ab9d197d4bd9fa47b4fb8bd\"\u003e\u003ccode\u003e9983ef8\u003c/code\u003e\u003c/a\u003e Bump version for uploading with updated twine.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/c9354683857b10b5e00cb93d06f7549ac8344fc0\"\u003e\u003ccode\u003ec935468\u003c/code\u003e\u003c/a\u003e Release v6.2.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/94d1099e6e79d34c436dc9f5d1cc039bcbf76738\"\u003e\u003ccode\u003e94d1099\u003c/code\u003e\u003c/a\u003e Prepare v6.2.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/af8b7d4ffa48d5947161ddb8c1ef1c60dda1e816\"\u003e\u003ccode\u003eaf8b7d4\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/372\"\u003e#372\u003c/a\u003e: Convert setup.cfg to pyproject.toml.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/20b8a192f666420a1986b793fd5846b89fdcd647\"\u003e\u003ccode\u003e20b8a19\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/370\"\u003e#370\u003c/a\u003e: Mention that using \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e with condition requires self to be...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/116fb4c3459067442d731e01a3db4694b50722f1\"\u003e\u003ccode\u003e116fb4c\u003c/code\u003e\u003c/a\u003e Minor style and readability improvements.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/96546ea34f8c77df009fb3bc019b72b03589c3fd\"\u003e\u003ccode\u003e96546ea\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.0 to 6.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/0106cc1d4764c9a94cd39a55579ce49bca9f4e1e\"\u003e\u003ccode\u003e0106cc1\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/4ee2600ab09b109f79d4ef08103240bf9f239b2d\"\u003e\u003ccode\u003e4ee2600\u003c/code\u003e\u003c/a\u003e Release v6.2.2.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/f1cec391fea1a1e407fe596b6e37b849adf7fce5\"\u003e\u003ccode\u003ef1cec39\u003c/code\u003e\u003c/a\u003e Minor improvements from GitHub Copilot code review.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v6.2.1...v6.2.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.10.5 to 2025.11.12\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/37ea150bee10958559f804f128de2fdd48e1ed45\"\u003e\u003ccode\u003e37ea150\u003c/code\u003e\u003c/a\u003e 2025.11.12 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2fa50bb698145e2401e17b23f6969d3952a6f7c1\"\u003e\u003ccode\u003e2fa50bb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4.6.2 to 5.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6cadb5304715523e57ea425f833aa3495a4e01e4\"\u003e\u003ccode\u003e6cadb53\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.10.05...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.0 to 8.3.1\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.3.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.1/\"\u003ehttps://pypi.org/project/click/8.3.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/28\"\u003ehttps://github.com/pallets/click/milestone/28\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3039\"\u003e#3039\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3055\"\u003e#3055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through the \u003ccode\u003eContext.invoke()\u003c/code\u003e method. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3066\"\u003e#3066\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3068\"\u003e#3068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect behavior for multiple parameters using the same name. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3071\"\u003e#3071\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3079\"\u003e#3079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is empty. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3019\"\u003e#3019\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3021\"\u003e#3021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to \u003ccode\u003etype_cast_value\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3069\"\u003e#3069\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3090\"\u003e#3090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters through the context inside parameter callbacks. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. :issue:\u003ccode\u003e3039\u003c/code\u003e\n:pr:\u003ccode\u003e3055\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through\nthe \u003ccode\u003eContext.invoke()\u003c/code\u003e method. :issue:\u003ccode\u003e3066\u003c/code\u003e :issue:\u003ccode\u003e3065\u003c/code\u003e :pr:\u003ccode\u003e3068\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect\nbehavior for multiple parameters using the same name. :issue:\u003ccode\u003e3071\u003c/code\u003e :pr:\u003ccode\u003e3079\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters\nthrough the context inside parameter callbacks. :issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3137\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is\nempty. :issue:\u003ccode\u003e3019\u003c/code\u003e :pr:\u003ccode\u003e3021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to\n\u003ccode\u003etype_cast_value\u003c/code\u003e. :issue:\u003ccode\u003e3069\u003c/code\u003e :pr:\u003ccode\u003e3090\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1d038f270701498433cb432f54db89f95f07a845\"\u003e\u003ccode\u003e1d038f2\u003c/code\u003e\u003c/a\u003e release version 8.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/03f3889f505d0c9ca4f9d6810f9e4ba2799f2a66\"\u003e\u003ccode\u003e03f3889\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3141\"\u003e#3141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3867781222cb63693ca67df94352d29d8e6e2770\"\u003e\u003ccode\u003e3867781\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b91bb9548a5617b1197add95e084d569f57149c3\"\u003e\u003ccode\u003eb91bb95\u003c/code\u003e\u003c/a\u003e Provide altered context to callbacks to hide \u003ccode\u003eUNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/437e1e3295c7ec979fc1bf285bb402ca20d847e7\"\u003e\u003ccode\u003e437e1e3\u003c/code\u003e\u003c/a\u003e Temporarily provide a fake context to the callback to hide \u003ccode\u003eUNSET\u003c/code\u003e values as ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ea70da487b05d6bb758d472a3a9ffab4a5b7fcd5\"\u003e\u003ccode\u003eea70da4\u003c/code\u003e\u003c/a\u003e Don't test using a file in docs/ (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3102\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e27b307462b725722f620c69dd1d5509c032d18a\"\u003e\u003ccode\u003ee27b307\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003euv run --all-extras pyright --verifytypes click\u003c/code\u003e pass (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a92c573f3195c9da3058eadf1735d38af186d22c\"\u003e\u003ccode\u003ea92c573\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3129\"\u003e#3129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bd131e1ab63da2281d6dd9b8205ad2eb5a085468\"\u003e\u003ccode\u003ebd131e1\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0b5c6b75f617e6ee2f9f6dcd071b8a4bf183d1ed\"\u003e\u003ccode\u003e0b5c6b7\u003c/code\u003e\u003c/a\u003e Add Best practices section  (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.0...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask-socketio` from 5.5.1 to 5.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/releases\"\u003eflask-socketio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 5.6.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\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/miguelgrinberg/Flask-SocketIO/blob/main/CHANGES.md\"\u003eflask-socketio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eFlask-SocketIO change log\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.6.0\u003c/strong\u003e - 2025-12-25\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse Flask test client's own \u003ccode\u003eenviron\u003c/code\u003e dict if it is available \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2142\"\u003e#2142\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/ccb9a758c634b668efedfe848880522f7a02fb3d\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13, 3.14 and pypy-3.11 to CI builds, drop 3.8 and 3.9 (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/1ad79405d3afa14b2f04b15f1fe8270ed0168132\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocumentation: Added an example using the \u003ccode\u003einit_app()\u003c/code\u003e method \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2110\"\u003e#2110\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/78dda9b64b275f9962d7a40de0db411b6aafac07\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.5.1\u003c/strong\u003e - 2025-01-06\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated version of python-socketio dependency \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2128\"\u003e#2128\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/c77c2e83e5c6baf552339884825230066cafd45e\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eOkke Harsta\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.5.0\u003c/strong\u003e - 2024-12-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a \u003ccode\u003ereason\u003c/code\u003e argument to the disconnect handler (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/01628b745f3e8fd1954d47a358a0d487dda57757\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade the code to more recent Python versions ([commit \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/1\"\u003e#1\u003c/a\u003e](\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/6a6734f71ab7c301a8cdc87fa78a515f0333a09b\"\u003ehttps://github.com/miguelgrinberg/flask-socketio/commit/6a6734f71ab7c301a8cdc87fa78a515f0333a09b\u003c/a\u003e) [commit \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2\"\u003e#2\u003c/a\u003e](\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/c3667e8489c91593d51ff35a2c013cd7bd0eb2c4\"\u003ehttps://github.com/miguelgrinberg/flask-socketio/commit/c3667e8489c91593d51ff35a2c013cd7bd0eb2c4\u003c/a\u003e))\u003c/li\u003e\n\u003cli\u003eRemove misleading warning about use of gevent-websocket in the documentation \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2122\"\u003e#2122\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/a1d3d61265fd45331ffd1957defa2f767e9c0115\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix typo in deployment documentation \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2119\"\u003e#2119\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/eeb3c4341185586673f479831153f5ff46f75f61\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eMaximilien Tirard\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.4.1\u003c/strong\u003e - 2024-10-01\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved a debugging statement (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/6841bd5c6ab29d12003ebca8171a7a9c8c2ffbf3\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.4.0\u003c/strong\u003e - 2024-09-30\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport catch-all events with \u003ccode\u003esocketio.on('*')\u003c/code\u003e \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2095\"\u003e#2095\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/45990f6721004d97fbac5b02edcd119c515155d6\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.3.7\u003c/strong\u003e - 2024-09-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent crash when client sends empty event (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/03512f2aecc27a3800d8d22031d6a663245d83d0\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle events with catch-all namespace \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2061\"\u003e#2061\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/f4ebcc798df28a0b9c91eb0b53ec3754a3ecdb3e\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd unit test for background tasks (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/84562cf876343150bb1c0b2431caf75b280e82cc\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.7, add Python 3.12, upgrade to pypy 3.10 (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/279bba4e373cc38aa7b7697ff47685235a48c477\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.3.6\u003c/strong\u003e - 2023-09-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixes in the test client to support recent changes in Socket.IO dependencies \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2006\"\u003e#2006\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/08411f99014d3680f1e2591b1e9ff1c5bfd0a5f5\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.3.5\u003c/strong\u003e - 2023-07-26\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent \u003ccode\u003eallow_unsafe_werkzeug\u003c/code\u003e option from being passed to web servers \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2001\"\u003e#2001\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/d6c6b8c336f533a9bac50cf3d7dbcc51669209b2\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.3.4\u003c/strong\u003e - 2023-05-03\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed cookie handling in Test Client for Flask \u0026gt;= 2.3 \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/1982\"\u003e#1982\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/70203246bcbc23715350ca5505527b31bf0693c1\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCorrectly handle ConnectionRefusedError in connect handler \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/1959\"\u003e#1959\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/64a18263cd3b864a5bb5b25bb5901350b8c1264d\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMore secure nginx configuration examples \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/1966\"\u003e#1966\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/commit/9b861ceaa91bbe168376cf5cdac6c2917e448946\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eLorenzo Leonardini\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.3.3\u003c/strong\u003e - 2023-03-17\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/miguelgrinberg/Flask-SocketIO/commit/e24a2f81260b19009761866dd4e75dd22eab9158\"\u003e\u003ccode\u003ee24a2f8\u003c/code\u003e\u003c/a\u003e Release 5.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-SocketIO/commit/ccb9a758c634b668efedfe848880522f7a02fb3d\"\u003e\u003ccode\u003eccb9a75\u003c/code\u003e\u003c/a\u003e Use Flask test client's own environ dict if available (Fixes \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2142\"\u003e#2142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-SocketIO/commit/e05f135684732af6ec28476b7900b994785a15c4\"\u003e\u003ccode\u003ee05f135\u003c/code\u003e\u003c/a\u003e linter fixes #nolog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-SocketIO/commit/1ad79405d3afa14b2f04b15f1fe8270ed0168132\"\u003e\u003ccode\u003e1ad7940\u003c/code\u003e\u003c/a\u003e Add Python 3.13, 3.14 and pypy-3.11, drop 3.8 and 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-SocketIO/commit/78dda9b64b275f9962d7a40de0db411b6aafac07\"\u003e\u003ccode\u003e78dda9b\u003c/code\u003e\u003c/a\u003e Added an example using the init_app() method (Fixes \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-socketio/issues/2110\"\u003e#2110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-SocketIO/commit/932b9ab2d39a2cca88260b561b854c8e3a45946b\"\u003e\u003ccode\u003e932b9ab\u003c/code\u003e\u003c/a\u003e Version 5.5.2.dev0\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/miguelgrinberg/flask-socketio/compare/v5.5.1...v5.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-engineio` from 4.12.3 to 4.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/miguelgrinberg/python-engineio/releases\"\u003epython-engineio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 4.13.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-engineio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\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/miguelgrinberg/python-engineio/blob/main/CHANGES.md\"\u003epython-engineio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003epython-engineio change log\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.13.0\u003c/strong\u003e - 2025-12-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eApply escaping rules when parsing cookie values (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/04e7c4dd4792d1f551b71930ec771fbb96cdaaf2\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSeveral minor improvements to the aiohttp integration \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/419\"\u003e#419\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/f7cb71c9d7ef961e839f0eb1e570d76b4ce481da\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003ePaulWasTaken\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eClarify logging behavior in documentation \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/421\"\u003e#421\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/7fe1771e7463960f6ef08f9bcc22b42c8df1012b\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eZipFile\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eAddress deprecation warnings \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/422\"\u003e#422\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/b90cbf2b981c301968611b495dd548c4b0153223\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd 3.14 and pypy-3.11 CI builds (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/df3d9741495d93f4ad0f2ec9f7b3a1d795f2234c\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 and 3.9 from CI builds (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/697b50f5bbc68b2416778d537ed88fefc8b004f0\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.12.3\u003c/strong\u003e - 2025-09-28\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReset client queue upon disconnection \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/414\"\u003e#414\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/af57bf235b824f7f179a68ef61a03d76a2c56655\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e['*']\u003c/code\u003e in addition to \u003ccode\u003e'*'\u003c/code\u003e in the \u003ccode\u003ecors_allowed_origins\u003c/code\u003e option \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/410\"\u003e#410\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/d59658c22207a8ca9f8c9c28312887da8fd9ee29\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eWu Clan\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.12.2\u003c/strong\u003e - 2025-06-04\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport new monkey-patched gevent \u003ccode\u003eQueue\u003c/code\u003e class in the client \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/403\"\u003e#403\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/dcde006b62e004c8a1d29d3478c95fbffbb11122\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBetter support of the ASGI spec when interpreting WebSocket events \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/405\"\u003e#405\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/86cb4d22be1735f0346f35ecb912818479b74f05\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eEric Zhang\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.12.1\u003c/strong\u003e - 2025-05-11\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAccept empty binary values in the async server \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/404\"\u003e#404\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/83691dd46336f10de8f288b3aa23b60e211307e1\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd SPDX license identifier \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/401\"\u003e#401\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/b7f1e680f7d012294402c7e2a50d7dbcd9b2e40f\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eMarc Mueller\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.12.0\u003c/strong\u003e - 2025-04-12\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize packet parsing to avoid unnecessary calls to JSON parser \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/399\"\u003e#399\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/2dda203103d93bc751ab0967719f18318cffc8da\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePass \u003ccode\u003eenviron\u003c/code\u003e as a second argument to callable option \u003ccode\u003ecors_allowed_origins\u003c/code\u003e \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/398\"\u003e#398\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/5cb561101dfcaed06bc9d73486515da93ead1752\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003ewft-swas\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.11.2\u003c/strong\u003e - 2024-12-29\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix incorrect disconnection reason reported when browser page is closed (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/132fbd9b2728c342fb989d559fa8c24b324c3cf3\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.11.1\u003c/strong\u003e - 2024-12-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove debugging prints :blush: (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/ded35d682690bf8a74d6df1325ec5b7e28d6eed6\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.11.0\u003c/strong\u003e - 2024-12-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePass a \u003ccode\u003ereason\u003c/code\u003e argument to the disconnect handler \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/393\"\u003e#393\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/d782d9b9adc04fb691a490f29713239ad40de6c5\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003emaxPayload\u003c/code\u003e to connection response \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/392\"\u003e#392\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/12e423fecd15c17ddecbef396844634431c45836\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eHeySMMReseller \u0026amp; HeySMMProvider\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eClient option to disable timestamps in connection URLs \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/386\"\u003e#386\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/e8f9bbafc8c3ef8126dbe06343d0a30e32074627\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn disconnected sessions as 400 errors \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/391\"\u003e#391\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/55a9e46ff91aacfc04cb21683e12345e71fe2f98\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unicode errors in ASGI driver \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/389\"\u003e#389\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/44ce778c9a7e26d62254563e3de8c4a0c073bdc0\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplaced deprecated \u003ccode\u003eget_event_loop\u003c/code\u003e with \u003ccode\u003eget_running_loop\u003c/code\u003e \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/384\"\u003e#384\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/a6e5d92ca98b41d2054737c6c49fc0511da0c3c6\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove constructs required by older, now unsupported Python versions (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/2f257c3f83be91a464141ff4d8366cdcd7d9543b\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSwitched to pyenv-asyncio for async unit tests (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/08ea5ad5127e3505120ddc8ac12657f3f70f9fef\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdopted \u003ccode\u003eunittest.mock.AsyncMock\u003c/code\u003e in async unit tests instead of homegrown version (\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/0a25a1d404dd8aab968e2b8aef870ad52c858dfc\"\u003ecommit\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/miguelgrinberg/python-engineio/commit/6685eb451036d24f653063d0dfe006e2829abf22\"\u003e\u003ccode\u003e6685eb4\u003c/code\u003e\u003c/a\u003e Release 4.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/697b50f5bbc68b2416778d537ed88fefc8b004f0\"\u003e\u003ccode\u003e697b50f\u003c/code\u003e\u003c/a\u003e Drop Python 3.8 and 3.9 from CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/b90cbf2b981c301968611b495dd548c4b0153223\"\u003e\u003ccode\u003eb90cbf2\u003c/code\u003e\u003c/a\u003e Address deprecations (Fixes \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/422\"\u003e#422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/7fe1771e7463960f6ef08f9bcc22b42c8df1012b\"\u003e\u003ccode\u003e7fe1771\u003c/code\u003e\u003c/a\u003e Clarify logging behavior (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/421\"\u003e#421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/acbbcbab0999b7d2bfe280b2017e87c9495b79b3\"\u003e\u003ccode\u003eacbbcba\u003c/code\u003e\u003c/a\u003e Update lower bound for Python version to 3.8 #nolog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/f7cb71c9d7ef961e839f0eb1e570d76b4ce481da\"\u003e\u003ccode\u003ef7cb71c\u003c/code\u003e\u003c/a\u003e Update aiohttp async driver. Use native public aiohttp API (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/419\"\u003e#419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/04e7c4dd4792d1f551b71930ec771fbb96cdaaf2\"\u003e\u003ccode\u003e04e7c4d\u003c/code\u003e\u003c/a\u003e Apply escaping rules when parsing cookie values\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/653ee1470ba07d3998fbffffeb26fa4e4f3f0d92\"\u003e\u003ccode\u003e653ee14\u003c/code\u003e\u003c/a\u003e Remove old build matrix exceptions #nolog (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-engineio/issues/416\"\u003e#416\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/df3d9741495d93f4ad0f2ec9f7b3a1d795f2234c\"\u003e\u003ccode\u003edf3d974\u003c/code\u003e\u003c/a\u003e Add 3.14 and pypy-3.11 CI tasks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-engineio/commit/58c37d48819a382c2c553365b1e1dbb10d382ed3\"\u003e\u003ccode\u003e58c37d4\u003c/code\u003e\u003c/a\u003e Version 4.12.4.dev0\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/miguelgrinberg/python-engineio/compare/v4.12.3...v4.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-socketio` from 5.14.2 to 5.16.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/releases\"\u003epython-socketio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 5.16.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.15.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.14.3\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\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/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003epython-socketio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003epython-socketio change log\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.16.0\u003c/strong\u003e - 2025-12-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAddress deprecation warnings (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/b235699d9b06564753c570b76055997e9d62a938\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 and 3.9 from CI builds (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/d0728d2f74538762dd551fa9cd0cd1fd5aedfa37\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.15.1\u003c/strong\u003e - 2025-12-16\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRestore support multiple arguments via pubsub emits \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1540\"\u003e#1540\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/c279f26bb8c9887c4ca99d4d81ad331c4844438c\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.15.0\u003c/strong\u003e - 2025-11-22\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRetry initial Redis connection \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1536\"\u003e#1534\u003c/a\u003e ([commit \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1\"\u003e#1\u003c/a\u003e](\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/1e903e173a2d7b04599c4f7f9630c1abbb531fad\"\u003ehttps://github.com/miguelgrinberg/python-socketio/commit/1e903e173a2d7b04599c4f7f9630c1abbb531fad\u003c/a\u003e) [commit \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/2\"\u003e#2\u003c/a\u003e](\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/5e898a9b93526e6e667767e54c60f4c84589989d\"\u003ehttps://github.com/miguelgrinberg/python-socketio/commit/5e898a9b93526e6e667767e54c60f4c84589989d\u003c/a\u003e))\u003c/li\u003e\n\u003cli\u003eCorrectly regenerate RabbitMQ binding after a connection failure \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1516\"\u003e#1516\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/c52e93b4a328d98a968bfbdec0cfd598b73ee913\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eGritty_dev\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eext_type\u003c/code\u003e in the \u003ccode\u003eMsgPackPacket\u003c/code\u003e class \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1521\"\u003e#1521\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/208925344a48485d2cd56e40eb74266c3bcb5311\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport sending \u003ccode\u003ebytesarray\u003c/code\u003es when using pub/sub managers (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/6c9b9974f72e2efdf62407ecab24ee6995448098\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix typos in documentation \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1520\"\u003e#1520\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/db3f1c2a0105c30cb833ddfca8f05fe4320468fd\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eLê Nam Khánh\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eImprovements to the logging documentation (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/b423d0e38eef559b7e81acb7e32059de305f982c\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.14.3\u003c/strong\u003e - 2025-10-29\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python's native \u003ccode\u003eConnectionRefusedError\u003c/code\u003e exception to reject a connection \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1515\"\u003e#1515\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/f3b18bde3f16437b223491d4c3e440ea37105fe3\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePush binary data to the aiopika client manager \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1514\"\u003e#1514\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/194e1b7f277b5f72e1de78d3f614e7b8b6c788ac\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.14.2\u003c/strong\u003e - 2025-10-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRestore binary message support in message queue setups \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1509\"\u003e#1509\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/bab4a10f48aaae11d7f832ebe5c30ad3f85d31b3\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix formatting of client connection error \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1507\"\u003e#1507\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/f298c9b54d76ab09ff72935937e1b9575bc45ffd\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd 3.14 and pypy-3.11 CI tasks (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/1f4cd3b025c294f25208ec3c05b5f8df6209e403\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove documentation of the \u003ccode\u003eBaseManager.get_participants()\u003c/code\u003e method (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/33722a0d96036f005188b07b8b46a5ef091fe65f\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.14.1\u003c/strong\u003e - 2025-10-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRestore support for \u003ccode\u003erediss://\u003c/code\u003e URLs, and add support for \u003ccode\u003evalkeys://\u003c/code\u003e as well (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/6e2d0de12bb4e4a99fdfc30bed0706ded620822c\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Redis connections using unix sockets \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1503\"\u003e#1503\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/a8deb3a8f3ee51d75c124157efa7fc9289fd592b\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eDarren Chang\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.14.0\u003c/strong\u003e - 2025-09-30\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReplace pickle with json in message queue communications \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1502\"\u003e#1502\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/53f6be094257ed81476b0e212c8cddd6d06ca39a\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Valkey in the Redis client managers \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1488\"\u003e#1488\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/36a89226a2fb18f876dcba48125a8c51904586ec\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003ephi-friday\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eKeep track of which namespaces failed to connect \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1496\"\u003e#1496\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/5dc2aea077469ad318e47b28a84845c5efb6bdcf\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed transport property of the simple clients to be a string as documented \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1499\"\u003e#1499\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/23556fb3dcb37074020494df40fb4495d47e7efe\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSimpleClient.call does not raise \u003ccode\u003eTimeoutError\u003c/code\u003e on timeout \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1501\"\u003e#1501\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/a59c6f520059eb095ab4472e5192ce3e486875d9\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eJames Thistlewood\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eWait for client to end background tasks on disconnect \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1500\"\u003e#1500\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/f61e0bec3750a83de619db9b779f9d93e449eade\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBetter error logging for the Redis managers \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1479\"\u003e#1479\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/b01b197df1ea5914fdaa2e12758e916ebd60162a\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eEugnee\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eChannel was not properly initialized in several pubsub client managers \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1476\"\u003e#1476\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/efd1247ed9ed61a61d6840dc2c8c92ab02031afb\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eEugnee\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eAdd message queue deployment recommendations for security (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/b3da354ed9eb46c0fb847c628b379ccae475a970\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing \u003ccode\u003easync\u003c/code\u003e on session examples for the async server \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1465\"\u003e#1465\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/5e04003dad0140fb1c6acff328e4215e62fbc58a\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eFunc\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eAdd SPDX license identifier \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1453\"\u003e#1453\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/81c80cddde06dd9561687c74e5769e25613282d7\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eMarc Mueller\u003c/strong\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/miguelgrinberg/python-socketio/commit/9e624b38c863efaacd104f2c0dd7125e12c8cac2\"\u003e\u003ccode\u003e9e624b3\u003c/code\u003e\u003c/a\u003e Release 5.16.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/d0728d2f74538762dd551fa9cd0cd1fd5aedfa37\"\u003e\u003ccode\u003ed0728d2\u003c/code\u003e\u003c/a\u003e Drop Python 3.8 and 3.9 from CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/b235699d9b06564753c570b76055997e9d62a938\"\u003e\u003ccode\u003eb235699\u003c/code\u003e\u003c/a\u003e Address deprecations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/412a6cf84960649d26d11f4aa33176bd94dbc213\"\u003e\u003ccode\u003e412a6cf\u003c/code\u003e\u003c/a\u003e Version 5.15.2.dev0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/c6eaca07bb70b42dc6dea5f03628a8df3b5a9ff7\"\u003e\u003ccode\u003ec6eaca0\u003c/code\u003e\u003c/a\u003e Release 5.15.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/c279f26bb8c9887c4ca99d4d81ad331c4844438c\"\u003e\u003ccode\u003ec279f26\u003c/code\u003e\u003c/a\u003e Support multiple arguments via pubsub emits (Fixes \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1539\"\u003e#1539\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1540\"\u003e#1540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/91553c1ac22b9a0cf7fe3d2205e0c011f8c8df12\"\u003e\u003ccode\u003e91553c1\u003c/code\u003e\u003c/a\u003e Bump django in /examples/server/wsgi/django_socketio (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1538\"\u003e#1538\u003c/a\u003e) #nolog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/692dca4747798e81f4505d4c1cbfe3ab9490368f\"\u003e\u003ccode\u003e692dca4\u003c/code\u003e\u003c/a\u003e Version 5.15.1.dev0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/a63007d17ad9beb6e4cd1da0d906ad9bea76d3ad\"\u003e\u003ccode\u003ea63007d\u003c/code\u003e\u003c/a\u003e Release 5.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/5e898a9b93526e6e667767e54c60f4c84589989d\"\u003e\u003ccode\u003e5e898a9\u003c/code\u003e\u003c/a\u003e Retry initial Redis connection (Fixes \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1534\"\u003e#1534\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/compare/v5.14.2...v5.16.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `urllib3` from 2.6.0 to 2.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/urllib3/urllib3/releases\"\u003eurllib3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.6.2\u003c/h2\u003e\n\u003ch2\u003e🚀 urllib3 is fundraising for HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support\"\u003eurllib3 is raising ~$40,000 USD\u003c/a\u003e to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects \u003ca href=\"https://opencollective.com/urllib3\"\u003eplease consider contributing financially\u003c/a\u003e to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.\u003c/p\u003e\n\u003cp\u003eThank you for your support.\u003c/p\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eHTTPResponse.read_chunked()\u003c/code\u003e to properly handle leftover data in the decoder's buffer when reading compressed chunked responses. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3734\"\u003eurllib3/urllib3#3734\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.6.1\u003c/h2\u003e\n\u003ch2\u003e🚀 urllib3 is fundraising for HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support\"\u003eurllib3 is raising ~$40,000 USD\u003c/a\u003e to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects \u003ca href=\"https://opencollective.com/urllib3\"\u003eplease consider contributing financially\u003c/a\u003e to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.\u003c/p\u003e\n\u003cp\u003eThank you for your support.\u003c/p\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore previously removed \u003ccode\u003eHTTPResponse.getheaders()\u003c/code\u003e and \u003ccode\u003eHTTPResponse.getheader()\u003c/code\u003e methods. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3731\"\u003e#3731\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/urllib3/urllib3/blob/main/CHANGES.rst\"\u003eurllib3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.6.2 (2025-12-11)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eHTTPResponse.read_chunked()\u003c/code\u003e to properly handle leftover data in\nthe decoder's buffer when reading compressed chunked responses.\n(\u003ccode\u003e[#3734](https://github.com/urllib3/urllib3/issues/3734) \u0026lt;https://github.com/urllib3/urllib3/issues/3734\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.6.1 (2025-12-08)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRestore previously removed \u003ccode\u003eHTTPResponse.getheaders()\u003c/code\u003e and\n\u003ccode\u003eHTTPResponse.getheader()\u003c/code\u003e methods.\n(\u003ccode\u003e[#3731](https://github.com/urllib3/urllib3/issues/3731) \u0026lt;https://github.com/urllib3/urllib3/issues/3731\u0026gt;\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/urllib3/urllib3/commit/83f8643ffb5b7f197457379148e2fa118ab0fcdc\"\u003e\u003ccode\u003e83f8643\u003c/code\u003e\u003c/a\u003e Release 2.6.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/571a9b7b894cee5733c7c2cf72fa260cf1f4b660\"\u003e\u003ccode\u003e571a9b7\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eHTTPResponse.read_chunked\u003c/code\u003e when leftover data is present in decoder's bu...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/bfe8e198a13800e3ee8ef8124a8928acb170c843\"\u003e\u003ccode\u003ebfe8e19\u003c/code\u003e\u003c/a\u003e Release 2.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/3ceeb84107946de22e9753fc1e6c075ab36d2c4c\"\u003e\u003ccode\u003e3ceeb84\u003c/code\u003e\u003c/a\u003e Restore \u003ccode\u003egetheaders()\u003c/code\u003e and \u003ccode\u003egetheader()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3732\"\u003e#3732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/urllib3/urllib3/compare/2.6.0...2.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `wsproto` from 1.2.0 to 1.3.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-hyper/wsproto/blob/main/CHANGELOG.rst\"\u003ewsproto's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.3.2 (2025-11-20)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix type hints to allow BytesMessage to accept bytes again, as well as\nbytearray.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.3.1 (2025-11-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd additional license identifier to pyproject.toml.\u003c/li\u003e\n\u003cli\u003eUse Python 3.13 to build the docs to match ReadTheDocs build environment.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.3.0 (2025-11-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRequire h11\u0026gt;=0.16 dependency.\u003c/li\u003e\n\u003cli\u003eFix \u0026quot;Upgrade\u0026quot; header value to match RFC.\u003c/li\u003e\n\u003cli\u003eAdd reason \u0026quot;Switching Protocols\u0026quot; to handshake response.\u003c/li\u003e\n\u003cli\u003eAdd docs for \u003ccode\u003ewsproto.Connection\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.12, 3.13, and 3.14.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7, 3.8, and 3.9.\u003c/li\u003e\n\u003cli\u003eImprove Python typing, specifically bytes vs. bytearray.\u003c/li\u003e\n\u003cli\u003eVarious linting, styling, and packaging improvements.\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-hyper/wsproto/commit/820701baf101b8c364a879440e1215da2fb0973f\"\u003e\u003ccode\u003e820701b\u003c/code\u003e\u003c/a\u003e Bump and release 1.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/wsproto/commit/b715abb6fad9ed45dd930711357dec67111caa21\"\u003e\u003ccode\u003eb715abb\u003c/code\u003e\u003c/a\u003e changelog entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/wsproto/commit/f4c1b0cade245f7e86e392f38040f3ca7ce4f475\"\u003e\u003ccode\u003ef4c1b0c\u003c/code\u003e\u003c/a\u003e don't unnecessarily construct bytearrays over and over again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/wsproto/commit/173c7d2c5601e3ac92275d1baad36b37f937ae2c\"\u003e\u003ccode\u003e173c7d2\u003c/code\u003e\u003c/a\u003e bytes are still a valid type here\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/wsproto/commit/f7afa864b304d5b1c18a22851a04eee8889f395d\"\u003e\u003ccode\u003ef7afa86\u003c/code\u003e\u003c/a\u003e Bump and release 1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/wsproto/commit/6702a7cfdf9290ae17672e2bb0206601af659f50\"\u003e\u003ccode\u003e6702a7c\u003c/code\u003e\u003c/a\u003e downgrade ReadTheDocs python version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/wsproto/commit/3bcb0f31add39fd7218ed15afee93ad5b35cc083\"\u003e\u003ccode\u003e3bcb0f3\u003c/code\u003e\u003c/a\u003e Add MIT license expression in \u003ccode\u003epyproject.toml\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/wsproto/commit/b8a65152237ba191f92ffdab7c14d4ab52b3b093\"\u003e\u003ccode\u003eb8a6515\u003c/code\u003e\u003c/a\u003e Bump and release 1.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/wsproto/commit/f2df768eaacde6803a1b3318914f395dbb259150\"\u003e\u003ccode\u003ef2df768\u003c/code\u003e\u003c/a\u003e fix Python versions for docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/wsproto/commit/230ac6b87dc69a655857b97b48151ef4479ee6cd\"\u003e\u003ccode\u003e230ac6b\u003c/code\u003e\u003c/a\u003e improve type handling for bytearray vs. bytes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-hyper/wsproto/compare/1.2.0...1.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `black` from 25.9.0 to 25.12.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.12.0\u003c/h2\u003e\n\u003cp\u003ePlease test out the draft 2026 style in version 26.1a1! This style will be finalized in\nthe January release (26.1.0). Most of the changes in \u003ccode\u003e--preview\u003c/code\u003e will be in the 2026\nstable style, but not all.\n\u003ca href=\"https://redirect.github.com/psf/black/issues/4042\"\u003ePlease share your feedback!\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis release (25.12.0) will still produce the 2025 style.\u003c/p\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBlack no longer supports running with Python 3.9 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4842\"\u003e#4842\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where comments preceding \u003ccode\u003e# fmt: off\u003c/code\u003e/\u003ccode\u003e# fmt: on\u003c/code\u003e blocks were incorrectly\nremoved, particularly affecting Jupytext's \u003ccode\u003e# %% [markdown]\u003c/code\u003e comments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4845\"\u003e#4845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when multiple \u003ccode\u003e# fmt: skip\u003c/code\u003e comments are used in a multi-part if-clause, on\nstring literals, or on dictionary entries with long lines (\u003ca href=\"https://redirect.github.com/psf/black/issues/4872\"\u003e#4872\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix possible crash when \u003ccode\u003efmt: \u003c/code\u003e directives aren't on the top level (\u003ca href=\"https://redirect.github.com/psf/black/issues/4856\"\u003e#4856\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003efmt: skip\u003c/code\u003e skipping the line after instead of the line it's on (\u003ca href=\"https://redirect.github.com/psf/black/issues/4855\"\u003e#4855\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unnecessary parentheses from the left-hand side of assignments while preserving\nmagic trailing commas and intentional multiline formatting (\u003ca href=\"https://redirect.github.com/psf/black/issues/4865\"\u003e#4865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003efix_fmt_skip_in_one_liners\u003c/code\u003e crashing on \u003ccode\u003ewith\u003c/code\u003e statements (\u003ca href=\"https://redirect.github.com/psf/black/issues/4853\"\u003e#4853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003efix_fmt_skip_in_one_liners\u003c/code\u003e crashing on annotated parameters (\u003ca href=\"https://redirect.github.com/psf/black/issues/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix new lines being added after imports with \u003ccode\u003e# fmt: skip\u003c/code\u003e on them (\u003ca href=\"https://redirect.github.com/psf/black/issues/4894\"\u003e#4894\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReleases now include arm64 Windows binaries and wheels (\u003ca href=\"https://redirect.github.com/psf/black/issues/4814\"\u003e#4814\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eIntegrations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eoutput-file\u003c/code\u003e input to GitHub Action \u003ccode\u003epsf/black\u003c/code\u003e to write formatter output to a\nfile for artifact capture and log cleanliness (\u003ca href=\"https://redirect.github.com/psf/black/issues/4824\"\u003e#4824\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e25.11.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnable base 3.14 support (\u003ca href=\"https://redirect.github.com/psf/black/issues/4804\"\u003e#4804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the new Python 3.14 t-string syntax introduced by PEP 750 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4805\"\u003e#4805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where comments between \u003ccode\u003e# fmt: off\u003c/code\u003e and \u003ccode\u003e# fmt: on\u003c/code\u003e were reformatted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4811\"\u003e#4811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eComments containing fmt directives now preserve their exact formatting instead of\nbeing normalized (\u003ca href=\"https://redirect.github.com/psf/black/issues/4811\"\u003e#4811\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/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.12.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBlack no longer supports running with Python 3.9 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4842\"\u003e#4842\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where comments preceding \u003ccode\u003e# fmt: off\u003c/code\u003e/\u003ccode\u003e# fmt: on\u003c/code\u003e blocks were incorrectly\nremoved, particularly affecting Jupytext's \u003ccode\u003e# %% [markdown]\u003c/code\u003e comments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4845\"\u003e#4845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when multiple \u003ccode\u003e# fmt: skip\u003c/code\u003e comments are used in a multi-part if-clause, on\nstring literals, or on dictionary entries with long lines (\u003ca href=\"https://redirect.github.com/psf/black/issues/4872\"\u003e#4872\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix possible crash when \u003ccode\u003efmt: \u003c/code\u003e directives aren't on the top level (\u003ca href=\"https://redirect.github.com/psf/black/issues/4856\"\u003e#4856\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003efmt: skip\u003c/code\u003e skipping the line after instead of the line it's on (\u003ca href=\"https://redirect.github.com/psf/black/issues/4855\"\u003e#4855\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unnecessary parentheses from the left-hand side of assignments while preserving\nmagic trailing commas and intentional multiline formatting (\u003ca href=\"https://redirect.github.com/psf/black/issues/4865\"\u003e#4865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003efix_fmt_skip_in_one_liners\u003c/code\u003e crashing on \u003ccode\u003ewith\u003c/code\u003e statements (\u003ca href=\"https://redirect.github.com/psf/black/issues/4853\"\u003e#4853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003efix_fmt_skip_in_one_liners\u003c/code\u003e crashing on annotated parameters (\u003ca href=\"https://redirect.github.com/psf/black/issues/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix new lines being added after imports with \u003ccode\u003e# fmt: skip\u003c/code\u003e on them (\u003ca href=\"https://redirect.github.com/psf/black/issues/4894\"\u003e#4894\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReleases now include arm64 Windows binaries and wheels (\u003ca href=\"https://redirect.github.com/psf/black/issues/4814\"\u003e#4814\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eIntegrations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eoutput-file\u003c/code\u003e input to GitHub Action \u003ccode\u003epsf/black\u003c/code\u003e to write formatter output to a\nfile for artifact capture and log cleanliness (\u003ca href=\"https://redirect.github.com/psf/black/issues/4824\"\u003e#4824\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e25.11.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnable base 3.14 support (\u003ca href=\"https://redirect.github.com/psf/black/issues/4804\"\u003e#4804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the new Python 3.14 t-string syntax introduced by PEP 750 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4805\"\u003e#4805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where comments between \u003ccode\u003e# fmt: off\u003c/code\u003e and \u003ccode\u003e# fmt: on\u003c/code\u003e were reformatted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4811\"\u003e#4811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eComments containing fmt directives now preserve their exact formatting instead of\nbeing normalized (\u003ca href=\"https://redirect.github.com/psf/black/issues/4811\"\u003e#4811\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove \u003ccode\u003emultiline_string_handling\u003c/code\u003e from \u003ccode\u003e--unstable\u003c/code\u003e to \u003ccode\u003e--preview\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4760\"\u003e#4760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug where module docstrings would be treated as normal strings if preceded by\ncomments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4764\"\u003e#4764\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/black/commit/782e5605c86aab56be6f905da10dcd3e463fd9c2\"\u003e\u003ccode\u003e782e560\u003c/code\u003e\u003c/a\u003e Pin actions/checkout@v5.0.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4895\"\u003e#4895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/f0f40945c1b0ebaa9ca733aca517610574c451d6\"\u003e\u003ccode\u003ef0f4094\u003c/code\u003e\u003c/a\u003e Fix new lines being added after imports with \u003ccode\u003e# fmt: skip\u003c/code\u003e on them (\u003ca href=\"https://redirect.github.com/psf/black/issues/4894\"\u003e#4894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/70fc194172184861aafb418c124824cae0fbe3b0\"\u003e\u003ccode\u003e70fc194\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix \u003ccode\u003e# fmt: skip\u003c/code\u003e ignored in deeply nested expressions\u0026quot; (\u003ca href=\"https://redirect.github.com/psf/black/issues/4893\"\u003e#4893\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/7044b145f4826e0d6e07178d89666856a8e37aff\"\u003e\u003ccode\u003e7044b14\u003c/code\u003e\u003c/a\u003e Prepare 25.12.0 release (\u003ca href=\"https://redirect.github.com/psf/black/issues/4891\"\u003e#4891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/5b470f0e577f3c39e0f7d668934d587c0733a652\"\u003e\u003ccode\u003e5b470f0\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003e# fmt: skip\u003c/code\u003e ignored in deeply nested expressions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4883\"\u003e#4883\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/1b342ef5b0433fc1ed61a7e05a65744bef706fc9\"\u003e\u003ccode\u003e1b342ef\u003c/code\u003e\u003c/a\u003e Fix crash when multiple \u003ccode\u003e# fmt: skip\u003c/code\u003e comments are used in multi-part if-clau...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/7b265f16634155dafcca65f6122ef7ed8d14a67f\"\u003e\u003ccode\u003e7b265f1\u003c/code\u003e\u003c/a\u003e Pin Hatch to hopefully fix Docker builds (\u003ca href=\"https://redirect.github.com/psf/black/issues/4878\"\u003e#4878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c9523f463fdc9d9f9f0e61ca92d9b37acdf0d8fc\"\u003e\u003ccode\u003ec9523f4\u003c/code\u003e\u003c/a\u003e Attempt to fix Docker build failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/4876\"\u003e#4876\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/0f376e0c35bcb29f87ce18eace30333a3e105841\"\u003e\u003ccode\u003e0f376e0\u003c/code\u003e\u003c/a\u003e Fix crashes when fmt directives are indented (\u003ca href=\"https://redirect.github.com/psf/black/issues/4856\"\u003e#4856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/a8bfcc1040fdfce2e02cdd85dc8bf4e7abe0462f\"\u003e\u003ccode\u003ea8bfcc1\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003efmt: skip\u003c/code\u003e skipping the line after instead of the line it's on (\u003ca href=\"https://redirect.github.com/psf/black/issues/4855\"\u003e#4855\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/25.9.0...25.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cfgv` from 3.4.0 to 3.5.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/c7342120ec8513671fb8dd54d8a14399dc59cd47\"\u003e\u003ccode\u003ec734212\u003c/code\u003e\u003c/a\u003e v3.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/d64e0cc2ba77dff75a4c15fb6cf5e6ed315dc80b\"\u003e\u003ccode\u003ed64e0cc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/cfgv/issues/158\"\u003e#158\u003c/a\u003e from asottile/key-value-map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/641559f162edff0c37277cd7c5ebd2b65292fad1\"\u003e\u003ccode\u003e641559f\u003c/code\u003e\u003c/a\u003e add KeyValueMap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/82e2f93a1554805a8938a6a3a588efe982e03019\"\u003e\u003ccode\u003e82e2f93\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/cfgv/issues/157\"\u003e#157\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/69cd02016f6a69de3a19a9741f16aa6d40120164\"\u003e\u003ccode\u003e69cd020\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/5ccc4d404d9a6a83bd3b12c1a24437db7ce8a081\"\u003e\u003ccode\u003e5ccc4d4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/cfgv/issues/156\"\u003e#156\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/2e7ffe560a5de38906821304378fe26ceb7a536c\"\u003e\u003ccode\u003e2e7ffe5\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/ef7849933897d28727e453646a5a632202724d41\"\u003e\u003ccode\u003eef78499\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/cfgv/issues/155\"\u003e#155\u003c/a\u003e from asottile/all-repos_autofix_all-repos-manual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/b34b882bba1f683e9e3da7b3ab97e3ee1607977f\"\u003e\u003ccode\u003eb34b882\u003c/code\u003e\u003c/a\u003e py310+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/724a279ea352c1883761e34e3f261c11be28f374\"\u003e\u003ccode\u003e724a279\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/cfgv/issues/154\"\u003e#154\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/asottile/cfgv/compare/v3.4.0...v3.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cucumber-tag-expressions` from 8.0.0 to 8.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/cucumber/tag-expressions/releases\"\u003ecucumber-tag-expressions's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev8.1.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[.NET] Add a .NET implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRender the empty tag expression as an empty string (\u003ca href=\"https://redirect.github.com/cucumber/tag-expressions/pull/222\"\u003e#222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for missing operands (\u003ca href=\"https://redirect.github.com/cucumber/tag-expressions/pull/221\"\u003e#221\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/cucumber/tag-expressions/blob/main/CHANGELOG.md\"\u003ecucumber-tag-expressions's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[8.1.0] - 2025-11-26\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[.NET] Add a .NET implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRender the empty tag expression as an empty string (\u003ca href=\"https://redirect.github.com/cucumber/tag-expressions/pull/222\"\u003e#222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for missing operands (\u003ca href=\"https://redirect.github.com/cucumber/tag-expressions/pull/221\"\u003e#221\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/cucumber/tag-expressions/commit/b9e8e62884b9df0b7d21f5f0f476110250b33d10\"\u003e\u003ccode\u003eb9e8e62\u003c/code\u003e\u003c/a\u003e Prepare release v8.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cucumber/tag-expressions/commit/0aae04bb75298f2e5c0adcd816d6e764d0fcb5c2\"\u003e\u003ccode\u003e0aae04b\u003c/code\u003e\u003c/a\u003e Fix naming in for dotnet (\u003ca href=\"https://redirect.github.com/cucumber/tag-expressions/issues/228\"\u003e#228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cucumber/tag-expressions/commit/0ddfd8bcb71cbec5c289f24e6fb4cbd15ae699d1\"\u003e\u003ccode\u003e0ddfd8b\u003c/code\u003e\u003c/a\u003e chore(deps): update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/cucumber/tag-expressions/issues/226\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cucumber/tag-expressions/commit/3a81137a11b38fdc4c97e834983c40372fd2f288\"\u003e\u003ccode\u003e3a81137\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency microsoft.net.test.sdk to 17.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cucumber/tag-expressions/commit/6890145d5d91e34a49ce521732e7cfa01bf48997\"\u003e\u003ccode\u003e6890145\u003c/code\u003e\u003c/a\u003e Update CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cucumber/tag-expressions/commit/3938cb76902c5eef29d7f74acaa9e096fb2073bb\"\u003e\u003ccode\u003e3938cb7\u003c/code\u003e\u003c/a\u003e Add Dotnet Implementation (\u003ca href=\"https://redirect.github.com/cucumber/tag-expressions/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cucumber/tag-expressions/commit/9de9e294cad9df087be7aa1885cee5c56a2f255e\"\u003e\u003ccode\u003e9de9e29\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency astral-sh/uv to v0.9.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cucumber/tag-expressions/commit/3f9757ccc2b722cf6abe52e3fbf1da244dfc10e7\"\u003e\u003ccode\u003e3f9757c\u003c/code\u003e\u003c/a\u003e Add a CI job running on PHP 8.5 (\u003ca href=\"https://redirect.github.com/cucumber/tag-expressions/issues/225\"\u003e#225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cucumber/tag-expressions/commit/b17009d1f1a7527ef210cf32ed0f389227080b34\"\u003e\u003ccode\u003eb17009d\u003c/code\u003e\u003c/a\u003e chore(deps): update stryker-js monorepo to v9.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cucumber/tag-expressions/commit/08caa3fbd7ad7f97634cda69d65622f4ccdc738e\"\u003e\u003ccode\u003e08caa3f\u003c/code\u003e\u003c/a\u003e chore(deps): update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/cucumber/tag-expressions/issues/224\"\u003e#224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/cucumber/tag-expressions/compare/v8.0.0...v8.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `nodeenv` from 1.9.1 to 1.10.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ekalinin/nodeenv/releases\"\u003enodeenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.10.0 - drop\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixed bugs 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse lowercase lookup for archmap by \u003ca href=\"https://github.com/robmoss2k\"\u003e\u003ccode\u003e@​robmoss2k\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ekalinin/nodeenv/pull/382\"\u003eekalinin/nodeenv#382\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements 🛠\u003c/h3\u003e\n\u003cul\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/ekalinin/nodeenv/pull/367\"\u003eekalinin/nodeenv#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd UV Virtual Environment support by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ekalinin/nodeenv/pull/386\"\u003eekalinin/nodeenv#386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sh instead of bash by \u003ca href=\"https://github.com/WhyNotHugo\"\u003e\u003ccode\u003e@​WhyNotHugo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ekalinin/nodeenv/pull/389\"\u003eekalinin/nodeenv#389\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace additional use of \u003ccode\u003ewhich(1)\u003c/code\u003e with \u003ccode\u003eshutil.which()\u003c/code\u003e by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ekalinin/nodeenv/pull/355\"\u003eekalinin/nodeenv#355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport leading \u003ccode\u003ev\u003c/code\u003e in \u003ccode\u003e.node-version\u003c/code\u003e by \u003ca href=\"https://github.com/nix6839\"\u003e\u003ccode\u003e@​nix6839\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.g...\n\n_Description has been truncated_","html_url":"https://github.com/williajm/flask_transport_ui/pull/73","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/williajm%2Fflask_transport_ui/issues/73","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/73/packages"}},{"old_version":"0.29.0","new_version":"0.32.0","update_type":"minor","path":null,"pr_created_at":"2025-12-22T16:17:20.000Z","version_change":"0.29.0 → 0.32.0","issue":{"uuid":"3754366572","node_id":"PR_kwDOQTBUns66LC_L","number":243,"state":"closed","title":"deps(core)(deps): bump the minor-patches-catch-all group across 1 directory with 19 updates","user":"dependabot[bot]","labels":["priority-low","area-etl","dependencies","python","type-infra","python-core"],"assignees":["prototyp33"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-29T08:35:53.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-22T16:17:20.000Z","updated_at":"2025-12-29T08:35:54.000Z","time_to_close":577113,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(core)(deps): bump","group_name":"minor-patches-catch-all","update_count":19,"packages":[{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"soupsieve","old_version":"2.6","new_version":"2.8.1","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"itemadapter","old_version":"0.12.2","new_version":"0.13.0","repository_url":"https://github.com/scrapy/itemadapter"},{"name":"selenium","old_version":"4.29.0","new_version":"4.39.0","repository_url":"https://github.com/SeleniumHQ/Selenium"},{"name":"cachetools","old_version":"6.2.3","new_version":"6.2.4","repository_url":"https://github.com/tkem/cachetools"},{"name":"filelock","old_version":"3.20.0","new_version":"3.20.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"trio","old_version":"0.29.0","new_version":"0.32.0","repository_url":"https://github.com/python-trio/trio"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"wsproto","old_version":"1.2.0","new_version":"1.3.2","repository_url":"https://github.com/python-hyper/wsproto"},{"name":"pyparsing","old_version":"3.2.5","new_version":"3.3.0","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"tornado","old_version":"6.5.3","new_version":"6.5.4","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"narwhals","old_version":"2.13.0","new_version":"2.14.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"zeep","old_version":"4.2.1","new_version":"4.3.2","repository_url":"https://github.com/mvantellingen/python-zeep"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-patches-catch-all group with 19 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.6` | `2.8.1` |\n| [itemadapter](https://github.com/scrapy/itemadapter) | `0.12.2` | `0.13.0` |\n| [selenium](https://github.com/SeleniumHQ/Selenium) | `4.29.0` | `4.39.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `6.2.3` | `6.2.4` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.0` | `3.20.1` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [trio](https://github.com/python-trio/trio) | `0.29.0` | `0.32.0` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [wsproto](https://github.com/python-hyper/wsproto) | `1.2.0` | `1.3.2` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.5` | `3.3.0` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.3` | `6.5.4` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.13.0` | `2.14.0` |\n| [zeep](https://github.com/mvantellingen/python-zeep) | `4.2.1` | `4.3.2` |\n\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.4\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.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\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.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\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/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.1.31 to 2025.11.12\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/37ea150bee10958559f804f128de2fdd48e1ed45\"\u003e\u003ccode\u003e37ea150\u003c/code\u003e\u003c/a\u003e 2025.11.12 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2fa50bb698145e2401e17b23f6969d3952a6f7c1\"\u003e\u003ccode\u003e2fa50bb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4.6.2 to 5.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6cadb5304715523e57ea425f833aa3495a4e01e4\"\u003e\u003ccode\u003e6cadb53\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `soupsieve` from 2.6 to 2.8.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/soupsieve/releases\"\u003esoupsieve's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Changes in tests to accommodate latest Python HTML parser changes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Drop support for Python 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add support for Python 3.14.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Deploy with PyPI's \u0026quot;Trusted Publisher\u0026quot;.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.7\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add \u003ccode\u003e:open\u003c/code\u003e pseudo selector.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add \u003ccode\u003e:muted\u003c/code\u003e pseudo selector.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Recognize the following pseudo selectors: \u003ccode\u003e:autofill\u003c/code\u003e, \u003ccode\u003e:buffering\u003c/code\u003e, \u003ccode\u003e:fullscreen\u003c/code\u003e, \u003ccode\u003e:picture-in-picture\u003c/code\u003e,\n\u003ccode\u003e:popover-open\u003c/code\u003e, \u003ccode\u003e:seeking\u003c/code\u003e, \u003ccode\u003e:stalled\u003c/code\u003e, and \u003ccode\u003e:volume-locked\u003c/code\u003e. These selectors, while recognized, will not match any\nelement as they require a live environment to check element states and browser states. This just prevents Soup Sieve\nfrom failing when any of these selectors are specified.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: A number of existing pseudo-classes are no longer noted as experimental.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Typing fixes.\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/facelessuser/soupsieve/commit/f89979745e12e83dbb31dde910a0ad08e9c5c717\"\u003e\u003ccode\u003ef899797\u003c/code\u003e\u003c/a\u003e Adjust changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/1b964a850bb482cc183f3f70811b25487ba200ee\"\u003e\u003ccode\u003e1b964a8\u003c/code\u003e\u003c/a\u003e Switch to using Zensical for documents (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/286\"\u003e#286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/046ce54956a0c30120038561e53b40994d29de2c\"\u003e\u003ccode\u003e046ce54\u003c/code\u003e\u003c/a\u003e Adjustments for changes in HTML parser (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/285\"\u003e#285\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/bf937788f0c3ff9bb2ffffacef7ad8832d8da16e\"\u003e\u003ccode\u003ebf93778\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop Python 3.8 (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/283\"\u003e#283\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/d82b33b72dd2e905dc441babdd68c98c846c1501\"\u003e\u003ccode\u003ed82b33b\u003c/code\u003e\u003c/a\u003e Spelling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/2fe1c55af2e2b1f033220a741113dba220bb84c9\"\u003e\u003ccode\u003e2fe1c55\u003c/code\u003e\u003c/a\u003e Use \u0026quot;Trusted Publisher\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/a616022df73ddc5ecb71092155be9baba876b52d\"\u003e\u003ccode\u003ea616022\u003c/code\u003e\u003c/a\u003e Link license in readme\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/6b22489422a9a7080adb2f465b1e0eaf7672603d\"\u003e\u003ccode\u003e6b22489\u003c/code\u003e\u003c/a\u003e Add new selectors and move some existing selectors out of experimental (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/280\"\u003e#280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/48be2ee7e99d786d22187990e0d9751a07f3e038\"\u003e\u003ccode\u003e48be2ee\u003c/code\u003e\u003c/a\u003e Branch specifiers on badge do not work\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/fcb3aaf85d1842814abab3887a7d7c0860d85f77\"\u003e\u003ccode\u003efcb3aaf\u003c/code\u003e\u003c/a\u003e Actually update badge\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facelessuser/soupsieve/compare/2.6...2.8.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `itemadapter` from 0.12.2 to 0.13.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapy/itemadapter/blob/master/Changelog.md\"\u003eitemadapter's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e0.13.0 (2025-12-15)\u003c/h3\u003e\n\u003cp\u003eAdded support for Python 3.14 and removed support for \u003ca href=\"https://pypy.org/\"\u003ePyPy\u003c/a\u003e\n3.10.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eget_json_schema()\u003c/code\u003e no longer reports all \u003ccode\u003escrapy.Item\u003c/code\u003e fields as required.\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/scrapy/itemadapter/commit/47481554948a1af59b3676b7310b2a93e0b96212\"\u003e\u003ccode\u003e4748155\u003c/code\u003e\u003c/a\u003e Bump version: 0.12.2 → 0.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/bd8354658ce8bc974dfa83be7e4cf5f7e3313af4\"\u003e\u003ccode\u003ebd83546\u003c/code\u003e\u003c/a\u003e Release notes for 0.13.0 (\u003ca href=\"https://redirect.github.com/scrapy/itemadapter/issues/114\"\u003e#114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/640995a710369ecaec990b821867a106afc0a4ee\"\u003e\u003ccode\u003e640995a\u003c/code\u003e\u003c/a\u003e Make Scrapy fields always optional (\u003ca href=\"https://redirect.github.com/scrapy/itemadapter/issues/113\"\u003e#113\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/da9e9cc1f8d1638c33bee905f78bee18b9a157db\"\u003e\u003ccode\u003eda9e9cc\u003c/code\u003e\u003c/a\u003e Migrate tests to pytest asserts (\u003ca href=\"https://redirect.github.com/scrapy/itemadapter/issues/111\"\u003e#111\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/f3957f675cced9efa3ec6fefea374cc858b04f0c\"\u003e\u003ccode\u003ef3957f6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scrapy/itemadapter/issues/110\"\u003e#110\u003c/a\u003e from scrapy/py314\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/46902a4e91d8c2672c6443a5804e4f32e8c97008\"\u003e\u003ccode\u003e46902a4\u003c/code\u003e\u003c/a\u003e Drop some 3.13 CI jobs and PyPy 3.10.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/f18da42059c00158415d895c63213bac60adbd70\"\u003e\u003ccode\u003ef18da42\u003c/code\u003e\u003c/a\u003e Actually remove the \u0026quot;extra\u0026quot; CI job for 3.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/c5e432c2a07af66a912aca330c86be15d38d5902\"\u003e\u003ccode\u003ec5e432c\u003c/code\u003e\u003c/a\u003e Disable the pydantic job for 3.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/030e1795a04e025ec82cff988c36ee5a337020fd\"\u003e\u003ccode\u003e030e179\u003c/code\u003e\u003c/a\u003e Roll back pylint-per-file-ignores.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/itemadapter/commit/6276de5e63fefa607ade6f29b78027acab47a6c7\"\u003e\u003ccode\u003e6276de5\u003c/code\u003e\u003c/a\u003e Add Python 3.14 RC2 to CI, bump tool versions.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapy/itemadapter/compare/v0.12.2...v0.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `selenium` from 4.29.0 to 4.39.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/SeleniumHQ/Selenium/releases\"\u003eselenium's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eSelenium 4.39.0\u003c/h2\u003e\n\u003ch2\u003eDetailed Changelogs by Component\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG\"\u003eJava\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES\"\u003ePython\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG\"\u003eDotNet\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES\"\u003eRuby\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md\"\u003eJavaScript\u003c/a\u003e\u003c/strong\u003e\n\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cul\u003e\n\u003cli\u003e[atoms] fix text node children are always considered as displayed \u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16284\"\u003e#16284\u003c/a\u003e by \u003ca href=\"https://github.com/joerg1985\"\u003e\u003ccode\u003e@​joerg1985\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16329\"\u003eSeleniumHQ/selenium#16329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[grid] Enhance UI with theme integration and improved status indicators by \u003ca href=\"https://github.com/VietND96\"\u003e\u003ccode\u003e@​VietND96\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16512\"\u003eSeleniumHQ/selenium#16512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py][bidi]: add emulation command - \u003ccode\u003eset_locale_override\u003c/code\u003e by \u003ca href=\"https://github.com/navin772\"\u003e\u003ccode\u003e@​navin772\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16504\"\u003eSeleniumHQ/selenium#16504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py][bidi]: add emulation command \u003ccode\u003eset_scripting_enabled\u003c/code\u003e by \u003ca href=\"https://github.com/navin772\"\u003e\u003ccode\u003e@​navin772\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16513\"\u003eSeleniumHQ/selenium#16513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Update docstrings to google pydoc format by \u003ca href=\"https://github.com/iampopovich\"\u003e\u003ccode\u003e@​iampopovich\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16511\"\u003eSeleniumHQ/selenium#16511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java][BiDi] implement \u003ccode\u003ebrowsingContext.downloadEnd\u003c/code\u003e event by \u003ca href=\"https://github.com/Delta456\"\u003e\u003ccode\u003e@​Delta456\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16347\"\u003eSeleniumHQ/selenium#16347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo and minor formatting changes in README.md by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16523\"\u003eSeleniumHQ/selenium#16523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Update docstrings (remove reST leftovers and resolve D200) by \u003ca href=\"https://github.com/iampopovich\"\u003e\u003ccode\u003e@​iampopovich\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16525\"\u003eSeleniumHQ/selenium#16525\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Fix docstring formatting and apply ruff linting rules by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16527\"\u003eSeleniumHQ/selenium#16527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Fix Ruff D417 warnings in docstrings by \u003ca href=\"https://github.com/iampopovich\"\u003e\u003ccode\u003e@​iampopovich\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16535\"\u003eSeleniumHQ/selenium#16535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Fix ruff D415 warnings in docstrings by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16536\"\u003eSeleniumHQ/selenium#16536\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py][bidi]: add \u003ccode\u003eset_screen_orientation_override\u003c/code\u003e command in Emulation by \u003ca href=\"https://github.com/navin772\"\u003e\u003ccode\u003e@​navin772\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16522\"\u003eSeleniumHQ/selenium#16522\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Fix D205 ruff warnings for docstrings and add type hints by \u003ca href=\"https://github.com/iampopovich\"\u003e\u003ccode\u003e@​iampopovich\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16537\"\u003eSeleniumHQ/selenium#16537\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py][bidi]: add \u003ccode\u003eset_download_behavior\u003c/code\u003e command by \u003ca href=\"https://github.com/navin772\"\u003e\u003ccode\u003e@​navin772\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16556\"\u003eSeleniumHQ/selenium#16556\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Bump pytest and dev dependencies by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16572\"\u003eSeleniumHQ/selenium#16572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[bazel] Move \u003ccode\u003erules_rust\u003c/code\u003e to \u003ccode\u003ebzlmod\u003c/code\u003e by \u003ca href=\"https://github.com/shs96c\"\u003e\u003ccode\u003e@​shs96c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16566\"\u003eSeleniumHQ/selenium#16566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ci] Make a PR for updating mirror file instead of pushing directly to trunk by \u003ca href=\"https://github.com/bonigarcia\"\u003e\u003ccode\u003e@​bonigarcia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16579\"\u003eSeleniumHQ/selenium#16579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ci] Update mirror info (2025-11-11T15:26:46Z) by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16578\"\u003eSeleniumHQ/selenium#16578\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ci] Revert latest changes related to the mirror workflow by \u003ca href=\"https://github.com/bonigarcia\"\u003e\u003ccode\u003e@​bonigarcia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16580\"\u003eSeleniumHQ/selenium#16580\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java]: refactor request interception tests and handle CORS by \u003ca href=\"https://github.com/navin772\"\u003e\u003ccode\u003e@​navin772\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16585\"\u003eSeleniumHQ/selenium#16585\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py][bidi]: enable download event tests for firefox by \u003ca href=\"https://github.com/navin772\"\u003e\u003ccode\u003e@​navin772\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16587\"\u003eSeleniumHQ/selenium#16587\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Fix more type annotations by \u003ca href=\"https://github.com/iampopovich\"\u003e\u003ccode\u003e@​iampopovich\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16551\"\u003eSeleniumHQ/selenium#16551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java][BiDi] implement \u003ccode\u003eemulation.setTimezoneOverride\u003c/code\u003e by \u003ca href=\"https://github.com/Delta456\"\u003e\u003ccode\u003e@​Delta456\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16530\"\u003eSeleniumHQ/selenium#16530\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[grid] Minimum Docker API 1.44 for Docker Engine v29+ in Dynamic Grid by \u003ca href=\"https://github.com/VietND96\"\u003e\u003ccode\u003e@​VietND96\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16591\"\u003eSeleniumHQ/selenium#16591\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow file modification time by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16589\"\u003eSeleniumHQ/selenium#16589\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py][bidi]: add emulation command \u003ccode\u003eset_user_agent_override\u003c/code\u003e by \u003ca href=\"https://github.com/navin772\"\u003e\u003ccode\u003e@​navin772\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16595\"\u003eSeleniumHQ/selenium#16595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[grid] Improve Docker client for Dynamic Grid by \u003ca href=\"https://github.com/VietND96\"\u003e\u003ccode\u003e@​VietND96\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16596\"\u003eSeleniumHQ/selenium#16596\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py]: reuse driver in case of bidi tests by \u003ca href=\"https://github.com/navin772\"\u003e\u003ccode\u003e@​navin772\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16597\"\u003eSeleniumHQ/selenium#16597\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[grid] Improve browser container labels and naming in Dynamic Grid by \u003ca href=\"https://github.com/VietND96\"\u003e\u003ccode\u003e@​VietND96\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16599\"\u003eSeleniumHQ/selenium#16599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[build] Upgrade rules_dotnet to 0.20.5 by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16592\"\u003eSeleniumHQ/selenium#16592\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [bidi] Simplify namespace for communications by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16602\"\u003eSeleniumHQ/selenium#16602\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Improve type hints with union syntax and native types by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16590\"\u003eSeleniumHQ/selenium#16590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Use double quotes in generate.py by \u003ca href=\"https://github.com/Delta456\"\u003e\u003ccode\u003e@​Delta456\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16607\"\u003eSeleniumHQ/selenium#16607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ci] Use pagination in mirror workflow to get all Selenium releases by \u003ca href=\"https://github.com/bonigarcia\"\u003e\u003ccode\u003e@​bonigarcia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16605\"\u003eSeleniumHQ/selenium#16605\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] Generate atoms statically by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16608\"\u003eSeleniumHQ/selenium#16608\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[nodejs] Update dev dependencies to fix vulnerabilities by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16610\"\u003eSeleniumHQ/selenium#16610\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java][BiDi] emulation: allow passing null to GeolocationOverride by \u003ca href=\"https://github.com/Delta456\"\u003e\u003ccode\u003e@​Delta456\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16594\"\u003eSeleniumHQ/selenium#16594\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/SeleniumHQ/selenium/commit/126f156aeef74660a72fa77efffc78adb1353620\"\u003e\u003ccode\u003e126f156\u003c/code\u003e\u003c/a\u003e [build] Prepare for release of Selenium 4.39.0 (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16672\"\u003e#16672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/080c81fb948cf52b074de02d43e328c3e2a4599a\"\u003e\u003ccode\u003e080c81f\u003c/code\u003e\u003c/a\u003e fix flaky Ruby test \u003ccode\u003edevtools_spec.rb\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/87fef04c132ef7e2aefe54a3ef07e3a315f0c64c\"\u003e\u003ccode\u003e87fef04\u003c/code\u003e\u003c/a\u003e [dotnet] [bidi] Remove browsing scoped events at core level (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16694\"\u003e#16694\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/d9d1d7933a3ec5f2a2da0bce388bf996f585537a\"\u003e\u003ccode\u003ed9d1d79\u003c/code\u003e\u003c/a\u003e [dotnet] [bidi] Always provide new json options for modules (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16691\"\u003e#16691\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/54f45d32e19a0bea807d1b63d3070b3200e59164\"\u003e\u003ccode\u003e54f45d3\u003c/code\u003e\u003c/a\u003e [dotnet] [bidi] BrowsingContext type as record with equality (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16692\"\u003e#16692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/fab7984c4a8d4a86da18e12d1a84b67a9ec3c234\"\u003e\u003ccode\u003efab7984\u003c/code\u003e\u003c/a\u003e [py] Bump urllib3 in packaging and dev dependencies (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16690\"\u003e#16690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/fb859ad4bac17765155f385ae8d24b225acef0c8\"\u003e\u003ccode\u003efb859ad\u003c/code\u003e\u003c/a\u003e [dotnet] [bidi] Stateful converters with hydration (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16670\"\u003e#16670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/cfd57e3f420c4f0724bc7b4584ba9856931dc189\"\u003e\u003ccode\u003ecfd57e3\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;[java] use \u003ccode\u003e--enable-chrome-logs\u003c/code\u003e to redirect browser I/O streams\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/efe5a4fdb477c0fa03438393ca3b8b991dd8c01d\"\u003e\u003ccode\u003eefe5a4f\u003c/code\u003e\u003c/a\u003e [java] Add JSpecify annotations to ChromiumDriver (Issue \u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/14291\"\u003e#14291\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16628\"\u003e#16628\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/966731074637d6250bf8a12ff85a174a03778ef6\"\u003e\u003ccode\u003e9667310\u003c/code\u003e\u003c/a\u003e [java] avoid ClassCastException for unexpected driver responses \u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/16389\"\u003e#16389\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/SeleniumHQ/Selenium/compare/selenium-4.29.0...selenium-4.39.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 6.2.3 to 6.2.4\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\u003ev6.2.4 (2025-12-15)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix license information displayed on PyPI be using an updated\nversion of \u003ccode\u003etwine\u003c/code\u003e for uploading.\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/9983ef8bd76758707ab9d197d4bd9fa47b4fb8bd\"\u003e\u003ccode\u003e9983ef8\u003c/code\u003e\u003c/a\u003e Bump version for uploading with updated twine.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tkem/cachetools/compare/v6.2.3...v6.2.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.20.0 to 3.20.1\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.20.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2025-68146: Fix TOCTOU symlink vulnerability in lock file creation 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/461\"\u003etox-dev/filelock#461\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.20.0...3.20.1\"\u003ehttps://github.com/tox-dev/filelock/compare/3.20.0...3.20.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/tox-dev/filelock/commit/377f62251d7cdf30768cc9ee1eb31cea1551c71b\"\u003e\u003ccode\u003e377f622\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/460\"\u003e#460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/4724d7f8c3393ec1f048c93933e6e3e6ec321f0e\"\u003e\u003ccode\u003e4724d7f\u003c/code\u003e\u003c/a\u003e Fix TOCTOU symlink vulnerability in lock file creation (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/461\"\u003e#461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/cb69414a2327cf0a9887e12054d1dc112ee700af\"\u003e\u003ccode\u003ecb69414\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/459\"\u003e#459\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/0769294f14a6c62eea64741722f7acef5386b4cd\"\u003e\u003ccode\u003e0769294\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/458\"\u003e#458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/414193a188892bd376eb5c56eb45a9cf8ecc9284\"\u003e\u003ccode\u003e414193a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/457\"\u003e#457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/1456797beb94ad59e5627462ad29f7ed3a966626\"\u003e\u003ccode\u003e1456797\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/456\"\u003e#456\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/8d6bf90af313ac7fd6e41ef2b715d91dd6858f5c\"\u003e\u003ccode\u003e8d6bf90\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/455\"\u003e#455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f7edeebddf79c210db2a6af145d33849e93c5550\"\u003e\u003ccode\u003ef7edeeb\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/454\"\u003e#454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/fb0923562189078b524ad3bd978e5e743dea9b2f\"\u003e\u003ccode\u003efb09235\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/453\"\u003e#453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f5825d867707b432e1c93f85833ce8d3766c986c\"\u003e\u003ccode\u003ef5825d8\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/452\"\u003e#452\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.20.0...3.20.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `typing-extensions` from 4.12.2 to 4.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/typing_extensions/releases\"\u003etyping-extensions's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cp\u003eNo user-facing changes since 4.15.0rc1.\u003c/p\u003e\n\u003cp\u003eNew features since 4.14.1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.15.0rc1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.1\u003c/h2\u003e\n\u003ch1\u003eRelease 4.14.1 (July 4, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix usage of \u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e nested inside other types\n(e.g., \u003ccode\u003etyping.Type[typing_extensions.TypedDict]\u003c/code\u003e). This is not allowed by the\ntype system but worked on older versions, so we maintain support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.0\u003c/h2\u003e\n\u003cp\u003eThis release adds several new features, including experimental support for inline typed dictionaries (\u003ca href=\"https://peps.python.org/pep-0764/\"\u003ePEP 764\u003c/a\u003e) and sentinels (\u003ca href=\"https://peps.python.org/pep-0661/\"\u003ePEP 661\u003c/a\u003e), and support for changes in Python 3.14. In addition, Python 3.8 is no longer supported.\u003c/p\u003e\n\u003cp\u003eChanges since 4.14.0rc1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003e__or__\u003c/code\u003e and \u003ccode\u003e__ror__\u003c/code\u003e methods from \u003ccode\u003etyping_extensions.Sentinel\u003c/code\u003e\non Python versions \u0026lt;3.10. PEP 604 was introduced in Python 3.10, and\n\u003ccode\u003etyping_extensions\u003c/code\u003e does not generally attempt to backport PEP-604 methods\nto prior versions.\u003c/li\u003e\n\u003cli\u003eFurther update \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e with changes in Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanges included in 4.14.0rc1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8 (including PyPy-3.8). Patch by \u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eDo not attempt to re-export names that have been removed from \u003ccode\u003etyping\u003c/code\u003e,\nanticipating the removal of \u003ccode\u003etyping.no_type_check_decorator\u003c/code\u003e in Python 3.15.\nPatch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003etyping_extensions.Format\u003c/code\u003e, \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e, and\n\u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e to align\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/python/typing_extensions/blob/main/CHANGELOG.md\"\u003etyping-extensions's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 4.15.0 (August 25, 2025)\u003c/h1\u003e\n\u003cp\u003eNo user-facing changes since 4.15.0rc1.\u003c/p\u003e\n\u003ch1\u003eRelease 4.15.0rc1 (August 18, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.14.1 (July 4, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix usage of \u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e nested inside other types\n(e.g., \u003ccode\u003etyping.Type[typing_extensions.TypedDict]\u003c/code\u003e). This is not allowed by the\ntype system but worked on older versions, so we maintain support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.14.0 (June 2, 2025)\u003c/h1\u003e\n\u003cp\u003eChanges since 4.14.0rc1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003e__or__\u003c/code\u003e and \u003ccode\u003e__ror__\u003c/code\u003e methods from \u003ccode\u003etyping_extensions.Sentinel\u003c/code\u003e\non Python versions \u0026lt;3.10. PEP 604 was introduced in Python 3.10, and\n\u003ccode\u003etyping_extensions\u003c/code\u003e does not generally attempt to backport PEP-604 methods\nto prior versions.\u003c/li\u003e\n\u003cli\u003eFurther update \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e with changes in Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.14.0rc1 (May 24, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8 (including PyPy-3.8). Patch by \u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eDo not attempt to re-export names that have been removed from \u003ccode\u003etyping\u003c/code\u003e,\nanticipating the removal of \u003ccode\u003etyping.no_type_check_decorator\u003c/code\u003e in Python 3.15.\nPatch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003etyping_extensions.Format\u003c/code\u003e, \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e, and\n\u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e to align\nwith changes in Python 3.14. Patches by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eFix tests for Python 3.14 and 3.15. Patches by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for inline typed dictionaries (\u003ca href=\"https://peps.python.org/pep-0764/\"\u003ePEP 764\u003c/a\u003e).\nPatch by \u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.Reader\u003c/code\u003e and \u003ccode\u003etyping_extensions.Writer\u003c/code\u003e. Patch by\nSebastian Rittau.\u003c/li\u003e\n\u003cli\u003eAdd support for sentinels (\u003ca href=\"https://peps.python.org/pep-0661/\"\u003ePEP 661\u003c/a\u003e). Patch by\n\u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\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/python/typing_extensions/commit/9d1637e264b5c1a6b7acee3e907015f89b20c2c9\"\u003e\u003ccode\u003e9d1637e\u003c/code\u003e\u003c/a\u003e Prepare release 4.15.0 (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/4bd67c5be5d9443c7d33c314d02a56ee125eb88d\"\u003e\u003ccode\u003e4bd67c5\u003c/code\u003e\u003c/a\u003e Coverage: exclude some noise (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/656\"\u003e#656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/e589a26da73b075c5276bae40b86db1af0144f84\"\u003e\u003ccode\u003ee589a26\u003c/code\u003e\u003c/a\u003e Coverage: add detailed report to job summary (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/655\"\u003e#655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/67d37fed1298e050f74d5acc95b2621bd37837ad\"\u003e\u003ccode\u003e67d37fe\u003c/code\u003e\u003c/a\u003e Coverage: Implement fail_under (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/654\"\u003e#654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/e9ae26f5286edee9262727755ecb9ad16e999192\"\u003e\u003ccode\u003ee9ae26f\u003c/code\u003e\u003c/a\u003e Don't delete previous coverage comment (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/ac80bb728a3006fc88ef7373b92f0c25cfcc7895\"\u003e\u003ccode\u003eac80bb7\u003c/code\u003e\u003c/a\u003e Add Coverage workflow (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/623\"\u003e#623\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/abaaafd98c1cc7e5baf098ec287a3d22cb339670\"\u003e\u003ccode\u003eabaaafd\u003c/code\u003e\u003c/a\u003e Prepare release 4.15.0rc1 (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/650\"\u003e#650\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/98104053ea8d49bcdd247804e5fa9f73136acbd4\"\u003e\u003ccode\u003e9810405\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003e@disjoint_base\u003c/code\u003e (PEP 800) (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/634\"\u003e#634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/7ee9e05fd484d06899ce56e80f5e1aa4c760fc03\"\u003e\u003ccode\u003e7ee9e05\u003c/code\u003e\u003c/a\u003e Backport type_params fix from CPython (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/646\"\u003e#646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/1e8eb9c06ef51b3a1e1f05303a16feca13f5ed98\"\u003e\u003ccode\u003e1e8eb9c\u003c/code\u003e\u003c/a\u003e Do not refer to PEP 705 as being experimental (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/648\"\u003e#648\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/typing_extensions/compare/4.12.2...4.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `attrs` from 25.3.0 to 25.4.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/hynek/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env from FIFOs (Unix) by \u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) by \u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini by \u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory 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/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml by \u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv work reliably on python 3.13 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/pull/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\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 in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/552\"\u003etheskumar/python-dotenv#552\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/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.1] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove more config to \u003ccode\u003epyproject.toml\u003c/code\u003e, removed \u003ccode\u003esetup.cfg\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for reading \u003ccode\u003e.env\u003c/code\u003e from FIFOs (Unix) by [\u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.0] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade build system to use PEP 517 \u0026amp; PEP 518 to use \u003ccode\u003ebuild\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e by [\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/583\"\u003e#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by [\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for disabling of \u003ccode\u003eload_dotenv()\u003c/code\u003e using \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e env var. by [\u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/569\"\u003e#569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.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.11\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.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.11 (2025-10-12)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14, lowest supported version is Python 3.8.\u003c/li\u003e\n\u003cli\u003eVarious updates to packaging, including PEP 740 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ad949ee3052c2265c66e3df2dd8871a5832ba327\"\u003e\u003ccode\u003ead949ee\u003c/code\u003e\u003c/a\u003e Release v3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cae4ba779e0a543823894bd4136651c187944da8\"\u003e\u003ccode\u003ecae4ba7\u003c/code\u003e\u003c/a\u003e Second release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8adb305165c77c4a45d1568a70ead75d2197692c\"\u003e\u003ccode\u003e8adb305\u003c/code\u003e\u003c/a\u003e Add space in RST link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/74cb2b652bb06133b0c4ab52cc98221be63162cf\"\u003e\u003ccode\u003e74cb2b6\u003c/code\u003e\u003c/a\u003e Release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05dab09fdde5bbf7d52f757c4dc62e0ba934cca8\"\u003e\u003ccode\u003e05dab09\u003c/code\u003e\u003c/a\u003e Format idna-data with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/90eac78b737d26613776b490432fc6d926b15c55\"\u003e\u003ccode\u003e90eac78\u003c/code\u003e\u003c/a\u003e Apply ruff formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a31ce7ecc0b767e40abb5ce28744ac567b73f366\"\u003e\u003ccode\u003ea31ce7e\u003c/code\u003e\u003c/a\u003e Remove errant test vectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/81f03334211c78c1832991ce70ebafb3cbfbb79c\"\u003e\u003ccode\u003e81f0333\u003c/code\u003e\u003c/a\u003e Omit vectors known to be broken in test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a0f32578c0cac28c7ffbb4c860c92eb2b9b579bd\"\u003e\u003ccode\u003ea0f3257\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into unicode-16-uts46-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/38d98860e6a1ab92fd35ab09ea4739feabf339a3\"\u003e\u003ccode\u003e38d9886\u003c/code\u003e\u003c/a\u003e Remove extra UTS46 test vector\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.10...v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `h11` from 0.14.0 to 0.16.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/1c5b07581f058886c8bdd87adababd7d959dc7ca\"\u003e\u003ccode\u003e1c5b075\u003c/code\u003e\u003c/a\u003e this time for surer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/d9c369935e853a7ee1aeb7e481f6dddf9b9c9b8a\"\u003e\u003ccode\u003ed9c3699\u003c/code\u003e\u003c/a\u003e this time for sure...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/d91b9dd2290a25c8c3f5ec15feb57de5873e6e39\"\u003e\u003ccode\u003ed91b9dd\u003c/code\u003e\u003c/a\u003e blacken\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/5a4683ca466b59bbab9b19cfea20ee157b31cee0\"\u003e\u003ccode\u003e5a4683c\u003c/code\u003e\u003c/a\u003e Soothe mypy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/9c9567f0a92d13a83a8d8ebdbc757c8c2d384536\"\u003e\u003ccode\u003e9c9567f\u003c/code\u003e\u003c/a\u003e Bump version to 0.16.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/114803a29ce50116dc47951c690ad4892b1a36ed\"\u003e\u003ccode\u003e114803a\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/9462006f6ce4941661888228cbd4ac1ea80689b0\"\u003e\u003ccode\u003e9462006\u003c/code\u003e\u003c/a\u003e Bump version to 0.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/70a96bea8e55403e5d92db14c111432c6d7a8685\"\u003e\u003ccode\u003e70a96be\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-hyper/h11/issues/181\"\u003e#181\u003c/a\u003e from Julien00859/Julien00859/get_int_max_str_digits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/60782ad107e538b9312aac7e1c119c8358bf797c\"\u003e\u003ccode\u003e60782ad\u003c/code\u003e\u003c/a\u003e Reject Content-Length longer 1 billion TB\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-hyper/h11/commit/dff7cc397a26ed4acdedd92d1bda6c8f18a6ed9f\"\u003e\u003ccode\u003edff7cc3\u003c/code\u003e\u003c/a\u003e Validate Chunked-Encoding chunk footer\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-hyper/h11/compare/v0.14.0...v0.16.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `trio` from 0.29.0 to 0.32.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow \u003ccode\u003etrio.CapacityLimiter\u003c/code\u003e to have zero total_tokens. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3321\"\u003epython-trio/trio#3321\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where iterating over an \u003ccode\u003e@as_safe_channel\u003c/code\u003e-derived \u003ccode\u003eReceiveChannel\u003c/code\u003e would raise \u003ccode\u003etrio.BrokenResourceError\u003c/code\u003e if the channel was closed by another task. It now shuts down cleanly. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3331\"\u003epython-trio/trio#3331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etrio.lowlevel.Task.iter_await_frames\u003c/code\u003e now works on completed tasks, by returning an empty list of frames if the underlying coroutine has been closed. Previously, it raised an internal error. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3337\"\u003epython-trio/trio#3337\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals without deprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003epython-trio/trio#3345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDecrease indentation for exception groups raised in \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3332\"\u003epython-trio/trio#3332\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations and removals\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/summar...\n\n_Description has been truncated_","html_url":"https://github.com/prototyp33/barcelona-housing-demographics-analyzer/pull/243","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/prototyp33%2Fbarcelona-housing-demographics-analyzer/issues/243","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/243/packages"}},{"old_version":"0.25.0","new_version":"0.32.0","update_type":"minor","path":"/backend","pr_created_at":"2025-11-10T05:50:14.000Z","version_change":"0.25.0 → 0.32.0","issue":{"uuid":"3606233577","node_id":"PR_kwDOQR4JXs6ycK5C","number":7,"state":"closed","title":"Build(deps): bump trio from 0.25.0 to 0.32.0 in /backend","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-11-12T20:18:25.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-10T05:50:14.000Z","updated_at":"2025-11-12T20:18:26.000Z","time_to_close":224891,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Build(deps)","packages":[{"name":"trio","old_version":"0.25.0","new_version":"0.32.0","repository_url":"https://github.com/python-trio/trio"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [trio](https://github.com/python-trio/trio) from 0.25.0 to 0.32.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow \u003ccode\u003etrio.CapacityLimiter\u003c/code\u003e to have zero total_tokens. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3321\"\u003epython-trio/trio#3321\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where iterating over an \u003ccode\u003e@as_safe_channel\u003c/code\u003e-derived \u003ccode\u003eReceiveChannel\u003c/code\u003e would raise \u003ccode\u003etrio.BrokenResourceError\u003c/code\u003e if the channel was closed by another task. It now shuts down cleanly. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3331\"\u003epython-trio/trio#3331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etrio.lowlevel.Task.iter_await_frames\u003c/code\u003e now works on completed tasks, by returning an empty list of frames if the underlying coroutine has been closed. Previously, it raised an internal error. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3337\"\u003epython-trio/trio#3337\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals without deprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003epython-trio/trio#3345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDecrease indentation for exception groups raised in \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3332\"\u003epython-trio/trio#3332\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations and removals\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c0b394a55594dc39f353bae87e745083acff172e\"\u003e\u003ccode\u003ec0b394a\u003c/code\u003e\u003c/a\u003e Bump version to 0.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/95681199abcefe8ca1325e7e122f1005a56def7f\"\u003e\u003ccode\u003e9568119\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3348\"\u003e#3348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/f05398f17521e246dff608c6843f6970bcabc220\"\u003e\u003ccode\u003ef05398f\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/19196a83424dcce23f85bb7fc5dad73a4d943002\"\u003e\u003ccode\u003e19196a8\u003c/code\u003e\u003c/a\u003e Drop 3.9 support (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003e#3345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/bd3787fc766babe9a49ff2ca19c4627a642aee12\"\u003e\u003ccode\u003ebd3787f\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3347\"\u003e#3347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/43261ce646e3efda0620fc6cc0a38c850aeaf267\"\u003e\u003ccode\u003e43261ce\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3346\"\u003e#3346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/1425e7e5ea65e200a2bfe76756a38388a1981b83\"\u003e\u003ccode\u003e1425e7e\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3344\"\u003e#3344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/06e6f089225b2a34af9a03d3034a63f29416a9f4\"\u003e\u003ccode\u003e06e6f08\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/236a2094f239d42cb45db9975469e9eb9a5a77c7\"\u003e\u003ccode\u003e236a209\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/3ee08fe46826296e660722a8c57afa56eb242b11\"\u003e\u003ccode\u003e3ee08fe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/compare/v0.25.0...v0.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trio\u0026package-manager=pip\u0026previous-version=0.25.0\u0026new-version=0.32.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\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/ProRenterv1/Renter/pull/7","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProRenterv1%2FRenter/issues/7","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/7/packages"}},{"old_version":"0.31.0","new_version":"0.32.0","update_type":"minor","path":null,"pr_created_at":"2025-11-03T04:43:05.000Z","version_change":"0.31.0 → 0.32.0","issue":{"uuid":"3580530710","node_id":"PR_kwDOPaXyZc6xG61-","number":123,"state":"closed","title":"Bump trio from 0.31.0 to 0.32.0","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2025-11-28T00:46:00.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-03T04:43:05.000Z","updated_at":"2025-11-28T00:46:08.000Z","time_to_close":2145775,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"trio","old_version":"0.31.0","new_version":"0.32.0","repository_url":"https://github.com/python-trio/trio"}],"path":null,"ecosystem":"pip"},"body":"Bumps [trio](https://github.com/python-trio/trio) from 0.31.0 to 0.32.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow \u003ccode\u003etrio.CapacityLimiter\u003c/code\u003e to have zero total_tokens. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3321\"\u003epython-trio/trio#3321\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where iterating over an \u003ccode\u003e@as_safe_channel\u003c/code\u003e-derived \u003ccode\u003eReceiveChannel\u003c/code\u003e would raise \u003ccode\u003etrio.BrokenResourceError\u003c/code\u003e if the channel was closed by another task. It now shuts down cleanly. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3331\"\u003epython-trio/trio#3331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etrio.lowlevel.Task.iter_await_frames\u003c/code\u003e now works on completed tasks, by returning an empty list of frames if the underlying coroutine has been closed. Previously, it raised an internal error. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3337\"\u003epython-trio/trio#3337\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals without deprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003epython-trio/trio#3345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDecrease indentation for exception groups raised in \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3332\"\u003epython-trio/trio#3332\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/python-trio/trio/commit/c0b394a55594dc39f353bae87e745083acff172e\"\u003e\u003ccode\u003ec0b394a\u003c/code\u003e\u003c/a\u003e Bump version to 0.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/95681199abcefe8ca1325e7e122f1005a56def7f\"\u003e\u003ccode\u003e9568119\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3348\"\u003e#3348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/f05398f17521e246dff608c6843f6970bcabc220\"\u003e\u003ccode\u003ef05398f\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/19196a83424dcce23f85bb7fc5dad73a4d943002\"\u003e\u003ccode\u003e19196a8\u003c/code\u003e\u003c/a\u003e Drop 3.9 support (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003e#3345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/bd3787fc766babe9a49ff2ca19c4627a642aee12\"\u003e\u003ccode\u003ebd3787f\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3347\"\u003e#3347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/43261ce646e3efda0620fc6cc0a38c850aeaf267\"\u003e\u003ccode\u003e43261ce\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3346\"\u003e#3346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/1425e7e5ea65e200a2bfe76756a38388a1981b83\"\u003e\u003ccode\u003e1425e7e\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3344\"\u003e#3344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/06e6f089225b2a34af9a03d3034a63f29416a9f4\"\u003e\u003ccode\u003e06e6f08\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/236a2094f239d42cb45db9975469e9eb9a5a77c7\"\u003e\u003ccode\u003e236a209\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/3ee08fe46826296e660722a8c57afa56eb242b11\"\u003e\u003ccode\u003e3ee08fe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trio\u0026package-manager=pip\u0026previous-version=0.31.0\u0026new-version=0.32.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\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/Solders-Girdles/GPT-Trader/pull/123","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Solders-Girdles%2FGPT-Trader/issues/123","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/123/packages"}},{"old_version":"0.30.0","new_version":"0.32.0","update_type":"minor","path":null,"pr_created_at":"2025-11-03T02:36:17.000Z","version_change":"0.30.0 → 0.32.0","issue":{"uuid":"3580334805","node_id":"PR_kwDOPUOpW86xGRgA","number":2607,"state":"closed","title":"chore(deps): bump trio from 0.30.0 to 0.32.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-11-04T13:54:15.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-03T02:36:17.000Z","updated_at":"2025-11-04T13:54:22.000Z","time_to_close":127078,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"trio","old_version":"0.30.0","new_version":"0.32.0","repository_url":"https://github.com/python-trio/trio"}],"path":null,"ecosystem":"pip"},"body":"Bumps [trio](https://github.com/python-trio/trio) from 0.30.0 to 0.32.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.31.0...v0.32.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow \u003ccode\u003etrio.CapacityLimiter\u003c/code\u003e to have zero total_tokens. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3321\"\u003epython-trio/trio#3321\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where iterating over an \u003ccode\u003e@as_safe_channel\u003c/code\u003e-derived \u003ccode\u003eReceiveChannel\u003c/code\u003e would raise \u003ccode\u003etrio.BrokenResourceError\u003c/code\u003e if the channel was closed by another task. It now shuts down cleanly. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3331\"\u003epython-trio/trio#3331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etrio.lowlevel.Task.iter_await_frames\u003c/code\u003e now works on completed tasks, by returning an empty list of frames if the underlying coroutine has been closed. Previously, it raised an internal error. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3337\"\u003epython-trio/trio#3337\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals without deprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003epython-trio/trio#3345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDecrease indentation for exception groups raised in \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3332\"\u003epython-trio/trio#3332\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations and removals\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c0b394a55594dc39f353bae87e745083acff172e\"\u003e\u003ccode\u003ec0b394a\u003c/code\u003e\u003c/a\u003e Bump version to 0.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/95681199abcefe8ca1325e7e122f1005a56def7f\"\u003e\u003ccode\u003e9568119\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3348\"\u003e#3348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/f05398f17521e246dff608c6843f6970bcabc220\"\u003e\u003ccode\u003ef05398f\u003c/code\u003e\u003c/a\u003e Add free-threaded Python 3.14t to the testing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/19196a83424dcce23f85bb7fc5dad73a4d943002\"\u003e\u003ccode\u003e19196a8\u003c/code\u003e\u003c/a\u003e Drop 3.9 support (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3345\"\u003e#3345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/bd3787fc766babe9a49ff2ca19c4627a642aee12\"\u003e\u003ccode\u003ebd3787f\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3347\"\u003e#3347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/43261ce646e3efda0620fc6cc0a38c850aeaf267\"\u003e\u003ccode\u003e43261ce\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3346\"\u003e#3346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/1425e7e5ea65e200a2bfe76756a38388a1981b83\"\u003e\u003ccode\u003e1425e7e\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3344\"\u003e#3344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/06e6f089225b2a34af9a03d3034a63f29416a9f4\"\u003e\u003ccode\u003e06e6f08\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/236a2094f239d42cb45db9975469e9eb9a5a77c7\"\u003e\u003ccode\u003e236a209\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/3ee08fe46826296e660722a8c57afa56eb242b11\"\u003e\u003ccode\u003e3ee08fe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trio\u0026package-manager=pip\u0026previous-version=0.30.0\u0026new-version=0.32.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\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/arthexis/arthexis/pull/2607","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/arthexis%2Farthexis/issues/2607","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2607/packages"}},{"old_version":"0.25.0","new_version":"0.31.0","update_type":"minor","path":null,"pr_created_at":"2025-10-17T09:33:11.000Z","version_change":"0.25.0 → 0.31.0","issue":{"uuid":"3525262409","node_id":"PR_kwDOQEMOZs6uRACa","number":5,"state":"open","title":"Bump trio from 0.25.0 to 0.31.0","user":"dependabot[bot]","labels":["Stale"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-10-17T09:33:11.000Z","updated_at":"2026-01-16T01:45:00.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"trio","old_version":"0.25.0","new_version":"0.31.0","repository_url":"https://github.com/python-trio/trio"}],"path":null,"ecosystem":"pip"},"body":"Bumps [trio](https://github.com/python-trio/trio) from 0.25.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/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003ebool(trio.Event)\u003c/code\u003e and have it raise a \u003ccode\u003eDeprecationWarning\u003c/code\u003e and tell users to use \u003ccode\u003etrio.Event.is_set\u003c/code\u003e instead. This is an alternative to \u003ccode\u003emypy --enable-error-code=truthy-bool\u003c/code\u003e for users who don't use type checking. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3322\"\u003epython-trio/trio#3322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen misnesting nurseries you now get a helpful \u003ccode\u003eRuntimeError\u003c/code\u003e instead of a catastrophic \u003ccode\u003eTrioInternalError\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3307\"\u003epython-trio/trio#3307\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.30.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.29.0...v0.30.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.29.0...v0.30.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e@trio.as_safe_channel\u003c/code\u003e, a wrapper that can be used to make async generators safe.\nThis will be the suggested fix for the flake8-async lint rule \u003ccode\u003eASYNC900\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3197\"\u003epython-trio/trio#3197\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow \u003ccode\u003etrio\u003c/code\u003e to be a \u003ccode\u003etypes.ModuleType\u003c/code\u003e and still have deprecated attributes. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/2135\"\u003epython-trio/trio#2135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed socket module for some older systems which lack \u003ccode\u003esocket.AI_NUMERICSERV\u003c/code\u003e.\nNow trio works on legacy (pre-Lion) macOS. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3133\"\u003epython-trio/trio#3133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate type hints for \u003ccode\u003etrio.run_process\u003c/code\u003e and \u003ccode\u003etrio.lowlevel.open_process\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3183\"\u003epython-trio/trio#3183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't mutate the global runner when MockClock is created. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3205\"\u003epython-trio/trio#3205\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/python-trio/trio/commit/94b7244505212061e21507c84725ef28be2705dd\"\u003e\u003ccode\u003e94b7244\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/439de50f5e3c9a718a2b4ed5790f27198de33e13\"\u003e\u003ccode\u003e439de50\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/cc148cfc0f23934aa603012b4f152c990e375f62\"\u003e\u003ccode\u003ecc148cf\u003c/code\u003e\u003c/a\u003e Suppress GeneratorExit from \u003ccode\u003e.aclose()\u003c/code\u003e for \u003ccode\u003eas_safe_channel\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3325\"\u003e#3325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/fc352b2b8ee84071273142375d8babb44333d115\"\u003e\u003ccode\u003efc352b2\u003c/code\u003e\u003c/a\u003e check for nursery misnesting on task exit (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/5bfba27b23f9a1f1bac86880b341bcfab54e43f2\"\u003e\u003ccode\u003e5bfba27\u003c/code\u003e\u003c/a\u003e Improve REPL KI (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3030\"\u003e#3030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/7cc7f6b9249f654627fb6b6737115a0900704c19\"\u003e\u003ccode\u003e7cc7f6b\u003c/code\u003e\u003c/a\u003e Define \u003ccode\u003etrio.Event.__bool__()\u003c/code\u003e to reduce bugs (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3322\"\u003e#3322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/8dd7d8ea38346b5effdfcc0669b356380eb670c9\"\u003e\u003ccode\u003e8dd7d8e\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3323\"\u003e#3323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/02c3794913a04a030f1f2ea76fb67b69abd90c3c\"\u003e\u003ccode\u003e02c3794\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003etyping_extensions\u003c/code\u003e requirement\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c3a0a762c343e5e4876725da18714bc79f38314f\"\u003e\u003ccode\u003ec3a0a76\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e,\u003c/code\u003e -\u0026gt; \u003ccode\u003e;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/e34ce248d6d1713a1986d13c93f2f49dda457228\"\u003e\u003ccode\u003ee34ce24\u003c/code\u003e\u003c/a\u003e Add message properly\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/compare/v0.25.0...v0.31.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trio\u0026package-manager=pip\u0026previous-version=0.25.0\u0026new-version=0.31.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR 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 merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\n\u003e **Note**\n\u003e Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n","html_url":"https://github.com/makhresearch/YOLOv8-ArchEx/pull/5","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/makhresearch%2FYOLOv8-ArchEx/issues/5","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/5/packages"}},{"old_version":"0.29.0","new_version":"0.31.0","update_type":"minor","path":null,"pr_created_at":"2025-10-06T17:08:47.000Z","version_change":"0.29.0 → 0.31.0","issue":{"uuid":"2891118841","node_id":"PR_kwDOIsJvGs6sUvj5","number":454,"state":"open","title":"Bump the python-packages group across 1 directory with 27 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-06T17:08:47.000Z","updated_at":"2025-10-06T17:08:48.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":27,"packages":[{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.0","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"fonttools","old_version":"4.57.0","new_version":"4.60.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"lxml","old_version":"5.3.2","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"packaging","old_version":"24.2","new_version":"25.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.7","new_version":"4.4.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"selenium","old_version":"4.31.0","new_version":"4.36.0","repository_url":"https://github.com/SeleniumHQ/Selenium"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.43","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"sqlalchemy-cockroachdb","old_version":"2.0.2","new_version":"2.0.3","repository_url":"https://github.com/cockroachdb/sqlalchemy-cockroachdb"},{"name":"trio","old_version":"0.29.0","new_version":"0.31.0","repository_url":"https://github.com/python-trio/trio"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"weasyprint","old_version":"65.1","new_version":"66.0","repository_url":"https://github.com/Kozea/WeasyPrint"},{"name":"xxhash","old_version":"3.5.0","new_version":"3.6.0","repository_url":"https://github.com/ifduyue/python-xxhash"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 27 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.3` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.0` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.57.0` | `4.60.1` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.3.2` | `6.0.2` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [packaging](https://github.com/pypa/packaging) | `24.2` | `25.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.7` | `4.4.0` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [selenium](https://github.com/SeleniumHQ/Selenium) | `4.31.0` | `4.36.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.43` |\n| [sqlalchemy-cockroachdb](https://github.com/cockroachdb/sqlalchemy-cockroachdb) | `2.0.2` | `2.0.3` |\n| [trio](https://github.com/python-trio/trio) | `0.29.0` | `0.31.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.5.0` |\n| [weasyprint](https://github.com/Kozea/WeasyPrint) | `65.1` | `66.0` |\n| [xxhash](https://github.com/ifduyue/python-xxhash) | `3.5.0` | `3.6.0` |\n\n\nUpdates `attrs` from 25.3.0 to 25.4.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/hynek/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `black` from 25.1.0 to 25.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.9.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for pre-python 3.7 \u003ccode\u003eawait/async\u003c/code\u003e as soft keywords/variable names\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash while formatting a long \u003ccode\u003edel\u003c/code\u003e statement containing tuples (\u003ca href=\"https://redirect.github.com/psf/black/issues/4628\"\u003e#4628\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash while formatting expressions using the walrus operator in complex \u003ccode\u003ewith\u003c/code\u003e\nstatements (\u003ca href=\"https://redirect.github.com/psf/black/issues/4630\"\u003e#4630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003e# fmt: skip\u003c/code\u003e followed by a comment at the end of file (\u003ca href=\"https://redirect.github.com/psf/black/issues/4635\"\u003e#4635\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when a tuple appears in the \u003ccode\u003eas\u003c/code\u003e clause of a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when tuple is used as a context manager inside a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4646\"\u003e#4646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when formatting a \u003ccode\u003e\\\u003c/code\u003e followed by a \u003ccode\u003e\\r\u003c/code\u003e followed by a comment (\u003ca href=\"https://redirect.github.com/psf/black/issues/4663\"\u003e#4663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on a \u003ccode\u003e\\\\r\\n\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4673\"\u003e#4673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on \u003ccode\u003eawait ...\u003c/code\u003e (where \u003ccode\u003e...\u003c/code\u003e is a literal \u003ccode\u003eEllipsis\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on parenthesized expression inside a type parameter bound (\u003ca href=\"https://redirect.github.com/psf/black/issues/4684\"\u003e#4684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when using line ranges excluding indented single line decorated items\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a bug where one-liner functions/conditionals marked with \u003ccode\u003e# fmt: skip\u003c/code\u003e would still\nbe formatted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4552\"\u003e#4552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003emultiline_string_handling\u003c/code\u003e with ternaries and dictionaries (\u003ca href=\"https://redirect.github.com/psf/black/issues/4657\"\u003e#4657\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003estring_processing\u003c/code\u003e would not split f-strings directly after\nexpressions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4680\"\u003e#4680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap the \u003ccode\u003ein\u003c/code\u003e clause of comprehensions across lines if necessary (\u003ca href=\"https://redirect.github.com/psf/black/issues/4699\"\u003e#4699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove parentheses around multiple exception types in \u003ccode\u003eexcept\u003c/code\u003e and \u003ccode\u003eexcept*\u003c/code\u003e without\n\u003ccode\u003eas\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4720\"\u003e#4720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e\\r\u003c/code\u003e style newlines to the potential newlines to normalize file newlines both from\nand to (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eParser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRewrite tokenizer to improve performance and compliance (\u003ca href=\"https://redirect.github.com/psf/black/issues/4536\"\u003e#4536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug where certain unusual expressions (e.g., lambdas) were not accepted in type\nparameter bounds and defaults. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4602\"\u003e#4602\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid using an extra process when running with only one worker (\u003ca href=\"https://redirect.github.com/psf/black/issues/4734\"\u003e#4734\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eIntegrations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix the version check in the vim file to reject Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4567\"\u003e#4567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnhance GitHub Action \u003ccode\u003epsf/black\u003c/code\u003e to read Black version from an additional section in\npyproject.toml: \u003ccode\u003e[project.dependency-groups]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4606\"\u003e#4606\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBuild gallery docker image with python3-slim and reduce image size (\u003ca href=\"https://redirect.github.com/psf/black/issues/4686\"\u003e#4686\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/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.9.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for pre-python 3.7 \u003ccode\u003eawait/async\u003c/code\u003e as soft keywords/variable names\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash while formatting a long \u003ccode\u003edel\u003c/code\u003e statement containing tuples (\u003ca href=\"https://redirect.github.com/psf/black/issues/4628\"\u003e#4628\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash while formatting expressions using the walrus operator in complex \u003ccode\u003ewith\u003c/code\u003e\nstatements (\u003ca href=\"https://redirect.github.com/psf/black/issues/4630\"\u003e#4630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003e# fmt: skip\u003c/code\u003e followed by a comment at the end of file (\u003ca href=\"https://redirect.github.com/psf/black/issues/4635\"\u003e#4635\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when a tuple appears in the \u003ccode\u003eas\u003c/code\u003e clause of a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when tuple is used as a context manager inside a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4646\"\u003e#4646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when formatting a \u003ccode\u003e\\\u003c/code\u003e followed by a \u003ccode\u003e\\r\u003c/code\u003e followed by a comment (\u003ca href=\"https://redirect.github.com/psf/black/issues/4663\"\u003e#4663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on a \u003ccode\u003e\\\\r\\n\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4673\"\u003e#4673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on \u003ccode\u003eawait ...\u003c/code\u003e (where \u003ccode\u003e...\u003c/code\u003e is a literal \u003ccode\u003eEllipsis\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on parenthesized expression inside a type parameter bound (\u003ca href=\"https://redirect.github.com/psf/black/issues/4684\"\u003e#4684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when using line ranges excluding indented single line decorated items\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a bug where one-liner functions/conditionals marked with \u003ccode\u003e# fmt: skip\u003c/code\u003e would still\nbe formatted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4552\"\u003e#4552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003emultiline_string_handling\u003c/code\u003e with ternaries and dictionaries (\u003ca href=\"https://redirect.github.com/psf/black/issues/4657\"\u003e#4657\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003estring_processing\u003c/code\u003e would not split f-strings directly after\nexpressions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4680\"\u003e#4680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap the \u003ccode\u003ein\u003c/code\u003e clause of comprehensions across lines if necessary (\u003ca href=\"https://redirect.github.com/psf/black/issues/4699\"\u003e#4699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove parentheses around multiple exception types in \u003ccode\u003eexcept\u003c/code\u003e and \u003ccode\u003eexcept*\u003c/code\u003e without\n\u003ccode\u003eas\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4720\"\u003e#4720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e\\r\u003c/code\u003e style newlines to the potential newlines to normalize file newlines both from\nand to (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eParser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRewrite tokenizer to improve performance and compliance (\u003ca href=\"https://redirect.github.com/psf/black/issues/4536\"\u003e#4536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug where certain unusual expressions (e.g., lambdas) were not accepted in type\nparameter bounds and defaults. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4602\"\u003e#4602\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid using an extra process when running with only one worker (\u003ca href=\"https://redirect.github.com/psf/black/issues/4734\"\u003e#4734\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eIntegrations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix the version check in the vim file to reject Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4567\"\u003e#4567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnhance GitHub Action \u003ccode\u003epsf/black\u003c/code\u003e to read Black version from an additional section in\npyproject.toml: \u003ccode\u003e[project.dependency-groups]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4606\"\u003e#4606\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/black/commit/af0ba72a73598c76189d6dd1b21d8532255d5942\"\u003e\u003ccode\u003eaf0ba72\u003c/code\u003e\u003c/a\u003e Prepare docs for release 25.9.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/ffc01a027580d99401abb3197e83d50dc4f4c746\"\u003e\u003ccode\u003effc01a0\u003c/code\u003e\u003c/a\u003e Fix schema generation error caused by new click version (\u003ca href=\"https://redirect.github.com/psf/black/issues/4750\"\u003e#4750\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/626b32fe2b5387656be6694da9a4b7a3148fb892\"\u003e\u003ccode\u003e626b32f\u003c/code\u003e\u003c/a\u003e Add normalizing for \u003ccode\u003e\\r\u003c/code\u003e style newlines (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/57a461258f324e33bca189b2eb49d7f7a944ffe7\"\u003e\u003ccode\u003e57a4612\u003c/code\u003e\u003c/a\u003e Fix mypy type issue (\u003ca href=\"https://redirect.github.com/psf/black/issues/4745\"\u003e#4745\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/4f6ad7cf8c3092e0fb4d82f54fe77ccde134468a\"\u003e\u003ccode\u003e4f6ad7c\u003c/code\u003e\u003c/a\u003e Wrap the \u003ccode\u003ein\u003c/code\u003e clause of comprehensions across lines if necessary (\u003ca href=\"https://redirect.github.com/psf/black/issues/4699\"\u003e#4699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/24f516961720c5578069dee30415b776359b7be5\"\u003e\u003ccode\u003e24f5169\u003c/code\u003e\u003c/a\u003e ci: Run diff-shades on unstable instead of preview (\u003ca href=\"https://redirect.github.com/psf/black/issues/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/4d55e6017993ee3f0927524e8bc19ead8de9e8ed\"\u003e\u003ccode\u003e4d55e60\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/0cf39efdbc3aaea455f95d31e5b42efb6bd61478\"\u003e\u003ccode\u003e0cf39ef\u003c/code\u003e\u003c/a\u003e Improve the performance of get_string_prefix (\u003ca href=\"https://redirect.github.com/psf/black/issues/4742\"\u003e#4742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/1f779dec013db37475fa56a5c9939a09eab7e7d6\"\u003e\u003ccode\u003e1f779de\u003c/code\u003e\u003c/a\u003e Fix line ranges decorator edge case (\u003ca href=\"https://redirect.github.com/psf/black/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/203fd6b5cdad975178b8174394a7f7fb13d14f02\"\u003e\u003ccode\u003e203fd6b\u003c/code\u003e\u003c/a\u003e Optimize Line string method (\u003ca href=\"https://redirect.github.com/psf/black/issues/4739\"\u003e#4739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/25.1.0...25.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.1.31 to 2025.10.5\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1\"\u003e\u003ccode\u003eddd90c6\u003c/code\u003e\u003c/a\u003e 2025.07.14 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52\"\u003e\u003ccode\u003ed905221\u003c/code\u003e\u003c/a\u003e 2025.07.09 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e767d5938eddddf804216cec93a55c85129c5f2d\"\u003e\u003ccode\u003ee767d59\u003c/code\u003e\u003c/a\u003e 2025.06.15 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2025.10.05\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\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.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\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/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\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/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\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/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\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.1 to 3.4.3\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.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\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.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\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/46f662da20edeced520c8819965a37eefbbc85de\"\u003e\u003ccode\u003e46f662d\u003c/code\u003e\u003c/a\u003e Release 3.4.3 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/638\"\u003e#638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1a059b26c155dd5fca408b0e0145c930633c4bf2\"\u003e\u003ccode\u003e1a059b2\u003c/code\u003e\u003c/a\u003e :wrench: skip building on freethreaded as we're not confident it is stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2275e3d3fea2bf6232661f1e9c21e7b81428e2a6\"\u003e\u003ccode\u003e2275e3d\u003c/code\u003e\u003c/a\u003e :pencil: final note in CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/c96acdfdb34b5b1deb6f70803167bae89b209832\"\u003e\u003ccode\u003ec96acdf\u003c/code\u003e\u003c/a\u003e :pencil: update release date on CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/43e5460518003df24ad1a3e7b5c0a34445395012\"\u003e\u003ccode\u003e43e5460\u003c/code\u003e\u003c/a\u003e :pencil: update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f277074e281a070cfa64fc91c46f8291043fc37c\"\u003e\u003ccode\u003ef277074\u003c/code\u003e\u003c/a\u003e :wrench: automatically lower confidence on small bytes str on non Unicode res...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/15ae2411072b5e026f2c9d6ec81b55f75af7dcf2\"\u003e\u003ccode\u003e15ae241\u003c/code\u003e\u003c/a\u003e :bug: automatically fallback on valid UTF-16 or UTF-32 even if the md says it...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/37397c1799a05454ab42fbbc94a7643cdb277924\"\u003e\u003ccode\u003e37397c1\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14 in nox test_mypyc session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/cb82537ecad195f48383b92e330351cea1fc6bc8\"\u003e\u003ccode\u003ecb82537\u003c/code\u003e\u003c/a\u003e :rewind: revert license due to compat python 3.7 issue setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/6a2efeb4c6e205964b61008b0c36ddf88c321543\"\u003e\u003ccode\u003e6a2efeb\u003c/code\u003e\u003c/a\u003e :art: fix linter errors\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.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.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.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.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-2-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-2-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/25\"\u003ehttps://github.com/pallets/click/milestone/25\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2952\"\u003e#2952\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2956\"\u003e#2956\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying functino \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2777\"\u003e#2777\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2990\"\u003e#2990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2911\"\u003e#2911\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3004\"\u003e#3004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2703\"\u003e#2703\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2846\"\u003e#2846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2971\"\u003e#2971\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2972\"\u003e#2972\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/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n:issue:\u003ccode\u003e2952\u003c/code\u003e :pr:\u003ccode\u003e2956\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying function \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. :issue:\u003ccode\u003e2777\u003c/code\u003e :pr:\u003ccode\u003e2990\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. Refs :issue:\u003ccode\u003e2911\u003c/code\u003e :pr:\u003ccode\u003e3004\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. :issue:\u003ccode\u003e2703\u003c/code\u003e :pr:\u003ccode\u003e2846\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. :issue:\u003ccode\u003e2971\u003c/code\u003e :pr:\u003ccode\u003e2972\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix a rare race in \u003ccode\u003eclick.testing.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\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/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `exceptiongroup` from 1.2.2 to 1.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/exceptiongroup/releases\"\u003eexceptiongroup's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003e**kwargs\u003c/code\u003e to function and method signatures as appropriate to match the signatures in the standard library\u003c/li\u003e\n\u003cli\u003eIn line with the stdlib typings in typeshed, updated \u003ccode\u003e(Base)ExceptionGroup\u003c/code\u003e generic types to define defaults for their generic arguments (defaulting to \u003ccode\u003eBaseExceptionGroup[BaseException]\u003c/code\u003e and \u003ccode\u003eExceptionGroup[Exception]\u003c/code\u003e) (PR by \u003ca href=\"https://github.com/mikenerone\"\u003e\u003ccode\u003e@​mikenerone\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eBaseExceptionGroup.__init__()\u003c/code\u003e to directly call \u003ccode\u003eBaseException.__init__()\u003c/code\u003e instead of the superclass \u003ccode\u003e__init__()\u003c/code\u003e in order to emulate the CPython behavior (broken or not) (PR by \u003ca href=\"https://github.com/cfbolz\"\u003e\u003ccode\u003e@​cfbolz\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the \u003ccode\u003eexceptions\u003c/code\u003e attribute to always return the same tuple of exceptions, created from the original exceptions sequence passed to \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e to match CPython behavior (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/143\"\u003e#143\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/agronholm/exceptiongroup/blob/main/CHANGES.rst\"\u003eexceptiongroup's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1.3.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003e**kwargs\u003c/code\u003e to function and method signatures as appropriate to match the\nsignatures in the standard library\u003c/li\u003e\n\u003cli\u003eIn line with the stdlib typings in typeshed, updated \u003ccode\u003e(Base)ExceptionGroup\u003c/code\u003e generic\ntypes to define defaults for their generic arguments (defaulting to\n\u003ccode\u003eBaseExceptionGroup[BaseException]\u003c/code\u003e and \u003ccode\u003eExceptionGroup[Exception]\u003c/code\u003e)\n(PR by \u003ca href=\"https://github.com/mikenerone\"\u003e\u003ccode\u003e@​mikenerone\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eBaseExceptionGroup.__init__()\u003c/code\u003e to directly call\n\u003ccode\u003eBaseException.__init__()\u003c/code\u003e instead of the superclass \u003ccode\u003e__init__()\u003c/code\u003e in order to\nemulate the CPython behavior (broken or not) (PR by \u003ca href=\"https://github.com/cfbolz\"\u003e\u003ccode\u003e@​cfbolz\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the \u003ccode\u003eexceptions\u003c/code\u003e attribute to always return the same tuple of exceptions,\ncreated from the original exceptions sequence passed to \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e to\nmatch CPython behavior\n(\u003ccode\u003e[#143](https://github.com/agronholm/exceptiongroup/issues/143) \u0026lt;https://github.com/agronholm/exceptiongroup/issues/143\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.2.2\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an \u003ccode\u003eassert\u003c/code\u003e in \u003ccode\u003eexceptiongroup._formatting\u003c/code\u003e that caused compatibility\nissues with Sentry (\u003ccode\u003e[#123](https://github.com/agronholm/exceptiongroup/issues/123) \u0026lt;https://github.com/agronholm/exceptiongroup/issues/123\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.2.1\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated the copying of \u003ccode\u003e__notes__\u003c/code\u003e to match CPython behavior (PR by CF Bolz-Tereick)\u003c/li\u003e\n\u003cli\u003eCorrected the type annotation of the exception handler callback to accept a\n\u003ccode\u003eBaseExceptionGroup\u003c/code\u003e instead of \u003ccode\u003eBaseException\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFixed type errors on Python \u0026lt; 3.10 and the type annotation of \u003ccode\u003esuppress()\u003c/code\u003e\n(PR by John Litborn)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.2.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded special monkeypatching if \u003ccode\u003eApport \u0026lt;https://github.com/canonical/apport\u0026gt;\u003c/code\u003e_ has\noverridden \u003ccode\u003esys.excepthook\u003c/code\u003e so it will format exception groups correctly\n(PR by John Litborn)\u003c/li\u003e\n\u003cli\u003eAdded a backport of \u003ccode\u003econtextlib.suppress()\u003c/code\u003e from Python 3.12.1 which also handles\nsuppressing exceptions inside exception groups\u003c/li\u003e\n\u003cli\u003eFixed bare \u003ccode\u003eraise\u003c/code\u003e in a handler reraising the original naked exception rather than\nan exception group which is what is raised when you do a \u003ccode\u003eraise\u003c/code\u003e in an \u003ccode\u003eexcept*\u003c/code\u003e\nhandler\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.1.3\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecatch()\u003c/code\u003e now raises a \u003ccode\u003eTypeError\u003c/code\u003e if passed an async exception handler instead of\njust giving a \u003ccode\u003eRuntimeWarning\u003c/code\u003e about the coroutine never being awaited. (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/66\"\u003e#66\u003c/a\u003e, PR by\nJohn Litborn)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/exceptiongroup/commit/77fba8a871408ff2c48f536e5e73b1918239ba5f\"\u003e\u003ccode\u003e77fba8a\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/5e153aa379ac53af79cc7f5e287f77929cb4d0dc\"\u003e\u003ccode\u003e5e153aa\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Migrated test dependencies to dependency groups\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/5000bfea208ad59e3a20e2fb91a513ad559711b1\"\u003e\u003ccode\u003e5000bfe\u003c/code\u003e\u003c/a\u003e Migrated tox configuration to native TOML\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/427220d67a52585e98575103b090b5fdaf87a899\"\u003e\u003ccode\u003e427220d\u003c/code\u003e\u003c/a\u003e Updated pytest options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/4ca264fa3605d52067c20b351a0d3b947fa1f363\"\u003e\u003ccode\u003e4ca264f\u003c/code\u003e\u003c/a\u003e Migrated test dependencies to dependency groups\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/163c3a8cb27f8a5325258b5a83e7cf8fc002c3b7\"\u003e\u003ccode\u003e163c3a8\u003c/code\u003e\u003c/a\u003e Marked test_exceptions_mutate_original_sequence as xfail on pypy3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/a1765740db2d55d1eb91d67a8fbbb355caf7881b\"\u003e\u003ccode\u003ea176574\u003c/code\u003e\u003c/a\u003e Always create the exceptions tuple at init and return it from the exceptions ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/550b79621cc35892413fa91903a1d6c7951d0449\"\u003e\u003ccode\u003e550b796\u003c/code\u003e\u003c/a\u003e Added BaseExceptionGroup.\u003cstrong\u003einit\u003c/strong\u003e, following CPython (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/2a84dfd5599bca0c653143f0f4252d38afac9867\"\u003e\u003ccode\u003e2a84dfd\u003c/code\u003e\u003c/a\u003e Added typevar defaults to (Base)ExceptionGroup (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/147\"\u003e#147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/fb9133b495fc82bc2907e8cfbdff6c6dc3087e2f\"\u003e\u003ccode\u003efb9133b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/exceptiongroup/compare/1.2.2...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask` from 3.1.0 to 3.1.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/2c1b30d0503cfb064f1cb252e6614a06915a362a\"\u003e\u003ccode\u003e2c1b30d\u003c/code\u003e\u003c/a\u003e release version 3.1.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/1292419ddfc6a14fc7f85b5ed7efcc2d215f1ad3\"\u003e\u003ccode\u003e1292419\u003c/code\u003e\u003c/a\u003e Update GitHub Actions workflow for artifact handling (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5795\"\u003e#5795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4dd52ca9c768c9b6d04180f0547d6f4b6e34f211\"\u003e\u003ccode\u003e4dd52ca\u003c/code\u003e\u003c/a\u003e Update GitHub Actions workflow for artifact handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/55c62556571ee46a94da174643b50ece06edead4\"\u003e\u003ccode\u003e55c6255\u003c/code\u003e\u003c/a\u003e update dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/d8259eb11900285af9b80b0fa47f841174c054e3\"\u003e\u003ccode\u003ed8259eb\u003c/code\u003e\u003c/a\u003e use Jinja name consistently\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/38b4c1e19b50494cfcdc9332899e09b7fed34979\"\u003e\u003ccode\u003e38b4c1e\u003c/code\u003e\u003c/a\u003e refactor stream_with_context for async views (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5799\"\u003e#5799\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/9822a0351574790cb66c652fcc396ad7aa2b09d8\"\u003e\u003ccode\u003e9822a03\u003c/code\u003e\u003c/a\u003e refactor stream_with_context for async views\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/49b7e7bc8fb69d605719991d1c0a99fcee689053\"\u003e\u003ccode\u003e49b7e7b\u003c/code\u003e\u003c/a\u003e security docs for TRUSTED_HOSTS (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5798\"\u003e#5798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/b228ca3d87745b746d904a2108429617a814ffda\"\u003e\u003ccode\u003eb228ca3\u003c/code\u003e\u003c/a\u003e security docs for TRUSTED_HOSTS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ff64079a516c269f171ababf3d92b86886a62ffd\"\u003e\u003ccode\u003eff64079\u003c/code\u003e\u003c/a\u003e update flask-talisman link\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.1.0...3.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fonttools` from 4.57.0 to 4.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fonttools/fonttools/releases\"\u003efonttools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.60.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ufoLib] Reverted accidental method name change in \u003ccode\u003eUFOReader.getKerningGroupConversionRenameMaps\u003c/code\u003e\nthat broke compatibility with downstream projects like defcon (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3948\"\u003e#3948\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3947\"\u003e#3947\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/robotools/defcon/issues/478\"\u003erobotools/defcon#478\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ufoLib] Added test coverage for \u003ccode\u003egetKerningGroupConversionRenameMaps\u003c/code\u003e method (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3950\"\u003e#3950\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Don't try to subset BASE table; pass it through by default instead (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3949\"\u003e#3949\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Remove empty BaseRecord entries in MarkBasePos lookups (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3897\"\u003e#3897\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3892\"\u003e#3892\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Add pruning for MarkLigPos and MarkMarkPos lookups (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3946\"\u003e#3946\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Remove duplicate features when subsetting (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3945\"\u003e#3945\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[Docs] Added documentation for the visitor module (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3944\"\u003e#3944\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.60.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e[pointPen] Allow \u003ccode\u003ereverseFlipped\u003c/code\u003e parameter of \u003ccode\u003eDecomposingPointPen\u003c/code\u003e to take a \u003ccode\u003eReverseFlipped\u003c/code\u003e enum value to control whether/how to reverse contour direction of flipped components, in addition to the existing True/False. This allows to set \u003ccode\u003eReverseFlipped.ON_CURVE_FIRST\u003c/code\u003e to ensure that the decomposed outline starts with an on-curve point before being reversed, for better consistency with other segment-oriented contour transformations. The change is backward compatible, and the default behavior hasn't changed (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3934\"\u003e#3934\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[filterPen] Added \u003ccode\u003eContourFilterPointPen\u003c/code\u003e, base pen for buffered contour operations, and \u003ccode\u003eOnCurveStartPointPen\u003c/code\u003e filter to ensure contours start with an on-curve point (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3934\"\u003e#3934\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[cu2qu] Fixed difference in cython vs pure-python complex division by real number (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3930\"\u003e#3930\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[varLib.avar] Refactored and added some new sub-modules and scripts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3926\"\u003e#3926\u003c/a\u003e).\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.build\u003c/code\u003e module to build avar (and a missing fvar) binaries into a possibly empty TTFont,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.unbuild\u003c/code\u003e module to print a .designspace snippet that would generate the same avar binary,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.map\u003c/code\u003e module to take TTFont and do the mapping, in user/normalized space,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.plan\u003c/code\u003e module moved from \u003ccode\u003evarLib.avarPlanner\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe bare \u003ccode\u003efonttools varLib.avar\u003c/code\u003e script is deprecated, in favour of \u003ccode\u003efonttools varLib.avar.build\u003c/code\u003e (or \u003ccode\u003eunbuild\u003c/code\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[interpolatable] Clarify \u003ccode\u003elinear_sum_assignment\u003c/code\u003e backend options and minimal dependency usage (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3927\"\u003e#3927\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[post] Speed up \u003ccode\u003ebuild_psNameMapping\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3923\"\u003e#3923\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[ufoLib] Added typing annotations to fontTools.ufoLib (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3875\"\u003e#3875\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.59.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[varLib] Clear \u003ccode\u003eUSE_MY_METRICS\u003c/code\u003e component flags when inconsistent across masters (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3912\"\u003e#3912\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Avoid negative advance width/height values when instatiating HVAR/VVAR, (unlikely in well-behaved fonts) (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3918\"\u003e#3918\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Fix shaping behaviour when pruning empty mark sets (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3915\"\u003e#3915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/harfbuzz/harfbuzz/issues/5499\"\u003eharfbuzz/harfbuzz#5499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cu2qu] Fixed \u003ccode\u003edot()\u003c/code\u003e product of perpendicular vectors not always returning exactly 0.0 in all Python implementations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3911\"\u003e#3911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Implemented fully-instantiating \u003ccode\u003eavar2\u003c/code\u003e fonts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3909\"\u003e#3909\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[feaLib] Allow float values in \u003ccode\u003eVariableScalar\u003c/code\u003e's axis locations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3906\"\u003e#3906\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3907\"\u003e#3907\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cu2qu] Handle special case in \u003ccode\u003ecalc_intersect\u003c/code\u003e for degenerate cubic curves where 3 to 4 control points are equal (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3904\"\u003e#3904\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.59.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[featureVars] Update OS/2.usMaxContext if possible after addFeatureVariationsRaw (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3894\"\u003e#3894\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[vhmtx] raise TTLibError('not enough data...') when hmtx/vmtx are truncated (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3843\"\u003e#3843\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3901\"\u003e#3901\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[feaLib] Combine duplicate features that have the same set of lookups regardless of the order in which those lookups are added to the feature (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3895\"\u003e#3895\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib] Deprecate \u003ccode\u003evarLib.mutator\u003c/code\u003e in favor of \u003ccode\u003evarLib.instancer\u003c/code\u003e. The latter provides equivalent full (static font) instancing in addition to partial VF instancing.\u003cbr /\u003e\nCLI users should replace \u003ccode\u003efonttools varLib.mutator\u003c/code\u003e with \u003ccode\u003efonttools varLib.instancer\u003c/code\u003e. API users should migrate to \u003ccode\u003efontTools.varLib.instancer.instantiateVariableFont\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/2680\"\u003e#2680\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.59.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved hard-dependency on pyfilesystem2 (\u003ccode\u003efs\u003c/code\u003e package) from \u003ccode\u003efonttools[ufo]\u003c/code\u003e extra. This is replaced by the \u003ccode\u003efontTools.misc.filesystem\u003c/code\u003e package, a stdlib-only, drop-in replacement for the subset of the pyfilesystem2's API used by \u003ccode\u003efontTools.ufoLib\u003c/code\u003e. The latter should continue to work with the upstream \u003ccode\u003efs\u003c/code\u003e (we even test with/without). However, clients who wish to continue using \u003ccode\u003efs\u003c/code\u003e can do so by depending on it directly instead of via the \u003ccode\u003efonttools[ufo]\u003c/code\u003e extra (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3885\"\u003e#3885\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3620\"\u003e#3620\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[xmlWriter] Replace illegal XML characters (e.g. control or non-characters) with \u0026quot;?\u0026quot; when dumping to ttx (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3868\"\u003e#3868\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/71\"\u003e#71\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.hvar] Fixed vertical metrics fields copy/pasta error (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3884\"\u003e#3884\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMicro optimizations in ttLib and sstruct modules (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3878\"\u003e#3878\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3879\"\u003e#3879\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[unicodedata] Add Garay script to RTL_SCRIPTS (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3882\"\u003e#3882\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[roundingPen] Remove unreliable kwarg usage. Argument names aren’t consistent among point pens’ \u003ccode\u003e.addComponent()\u003c/code\u003e implementations, in particular \u003ccode\u003ebaseGlyphName\u003c/code\u003e vs \u003ccode\u003eglyphName\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3880\"\u003e#3880\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.58.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/fonttools/fonttools/blob/main/NEWS.rst\"\u003efonttools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.60.1 (released 2025-09-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ufoLib] Reverted accidental method name change in \u003ccode\u003eUFOReader.getKerningGroupConversionRenameMaps\u003c/code\u003e\nthat broke compatibility with downstream projects like defcon (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3948\"\u003e#3948\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3947\"\u003e#3947\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/robotools/defcon/issues/478\"\u003erobotools/defcon#478\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ufoLib] Added test coverage for \u003ccode\u003egetKerningGroupConversionRenameMaps\u003c/code\u003e method (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3950\"\u003e#3950\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Don't try to subset BASE table; pass it through by default instead (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3949\"\u003e#3949\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Remove empty BaseRecord entries in MarkBasePos lookups (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3897\"\u003e#3897\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3892\"\u003e#3892\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Add pruning for MarkLigPos and MarkMarkPos lookups (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3946\"\u003e#3946\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Remove duplicate features when subsetting (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3945\"\u003e#3945\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[Docs] Added documentation for the visitor module (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3944\"\u003e#3944\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.60.0 (released 2025-09-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[pointPen] Allow \u003ccode\u003ereverseFlipped\u003c/code\u003e parameter of \u003ccode\u003eDecomposingPointPen\u003c/code\u003e to take a \u003ccode\u003eReverseFlipped\u003c/code\u003e\nenum value to control whether/how to reverse contour direction of flipped components, in addition to\nthe existing True/False. This allows to set \u003ccode\u003eReverseFlipped.ON_CURVE_FIRST\u003c/code\u003e to ensure that\nthe decomposed outline starts with an on-curve point before being reversed, for better consistency\nwith other segment-oriented contour transformations. The change is backward compatible, and the\ndefault behavior hasn't changed (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3934\"\u003e#3934\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[filterPen] Added \u003ccode\u003eContourFilterPointPen\u003c/code\u003e, base pen for buffered contour operations, and\n\u003ccode\u003eOnCurveStartPointPen\u003c/code\u003e filter to ensure contours start with an on-curve point (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3934\"\u003e#3934\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cu2qu] Fixed difference in cython vs pure-python complex division by real number (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3930\"\u003e#3930\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.avar] Refactored and added some new sub-modules and scripts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3926\"\u003e#3926\u003c/a\u003e).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.build\u003c/code\u003e module to build avar (and a missing fvar) binaries into a possibly empty TTFont,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.unbuild\u003c/code\u003e module to print a .designspace snippet that would generate the same avar binary,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.map\u003c/code\u003e module to take TTFont and do the mapping, in user/normalized space,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.plan\u003c/code\u003e module moved from \u003ccode\u003evarLib.avarPlanner\u003c/code\u003e.\nThe bare \u003ccode\u003efonttools varLib.avar\u003c/code\u003e script is deprecated, in favour of \u003ccode\u003efonttools varLib.avar.build\u003c/code\u003e (or \u003ccode\u003eunbuild\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e[interpolatable] Clarify \u003ccode\u003elinear_sum_assignment\u003c/code\u003e backend options and minimal dependency\nusage (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3927\"\u003e#3927\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[post] Speed up \u003ccode\u003ebuild_psNameMapping\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3923\"\u003e#3923\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ufoLib] Added typing annotations to fontTools.ufoLib (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3875\"\u003e#3875\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.59.2 (released 2025-08-27)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[varLib] Clear \u003ccode\u003eUSE_MY_METRICS\u003c/code\u003e component flags when inconsistent across masters (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3912\"\u003e#3912\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Avoid negative advance width/height values when instatiating HVAR/VVAR,\n(unlikely in well-behaved fonts) (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3918\"\u003e#3918\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Fix shaping behaviour when pruning empty mark sets (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3915\"\u003e#3915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/harfbuzz/harfbuzz/issues/5499\"\u003eharfbuzz/harfbuzz#5499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cu2qu] Fixed \u003ccode\u003edot()\u003c/code\u003e product of perpendicular vectors not always returning exactly 0.0\nin all Python implementations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3911\"\u003e#3911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Implemented fully-instantiating \u003ccode\u003eavar2\u003c/code\u003e fonts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3909\"\u003e#3909\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[feaLib] Allow float values in \u003ccode\u003eVariableScalar\u003c/code\u003e's axis locations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3906\"\u003e#3906\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3907\"\u003e#3907\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cu2qu] Handle special case in \u003ccode\u003ecalc_intersect\u003c/code\u003e for degenerate cubic curves where 3 to 4\ncontrol points are equal (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3904\"\u003e#3904\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e4.59.1 (released 2025-08-14)\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/fonttools/fonttools/commit/af032c141b452f47f35e93f1c5ca2004f133cdcf\"\u003e\u003ccode\u003eaf032c1\u003c/code\u003e\u003c/a\u003e Release 4.60.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/d47d26167836eefb08bc2051647f9a8d2195e00b\"\u003e\u003ccode\u003ed47d261\u003c/code\u003e\u003c/a\u003e Update NEWS.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/c734ff27cadfabadef83089df65091a5c6c50e9a\"\u003e\u003ccode\u003ec734ff2\u003c/...\n\n_Description has been truncated_","html_url":"https://github.com/Shy/party/pull/454","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shy%2Fparty/issues/454","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/454/packages"}},{"old_version":"0.29.0","new_version":"0.31.0","update_type":"minor","path":null,"pr_created_at":"2025-10-02T17:08:11.000Z","version_change":"0.29.0 → 0.31.0","issue":{"uuid":"2882449075","node_id":"PR_kwDOIsJvGs6rzq6z","number":453,"state":"closed","title":"Bump the python-packages group across 1 directory with 26 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2025-10-06T17:07:27.000Z","author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-02T17:08:11.000Z","updated_at":"2025-10-06T17:07:27.000Z","time_to_close":345556,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":26,"packages":[{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.8.3","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.0","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"fonttools","old_version":"4.57.0","new_version":"4.60.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"lxml","old_version":"5.3.2","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"packaging","old_version":"24.2","new_version":"25.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.7","new_version":"4.4.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"selenium","old_version":"4.31.0","new_version":"4.36.0","repository_url":"https://github.com/SeleniumHQ/Selenium"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.43","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"sqlalchemy-cockroachdb","old_version":"2.0.2","new_version":"2.0.3","repository_url":"https://github.com/cockroachdb/sqlalchemy-cockroachdb"},{"name":"trio","old_version":"0.29.0","new_version":"0.31.0","repository_url":"https://github.com/python-trio/trio"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"weasyprint","old_version":"65.1","new_version":"66.0","repository_url":"https://github.com/Kozea/WeasyPrint"},{"name":"xxhash","old_version":"3.5.0","new_version":"3.6.0","repository_url":"https://github.com/ifduyue/python-xxhash"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 26 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.8.3` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.3` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.0` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.57.0` | `4.60.1` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.3.2` | `6.0.2` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [packaging](https://github.com/pypa/packaging) | `24.2` | `25.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.7` | `4.4.0` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [selenium](https://github.com/SeleniumHQ/Selenium) | `4.31.0` | `4.36.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.43` |\n| [sqlalchemy-cockroachdb](https://github.com/cockroachdb/sqlalchemy-cockroachdb) | `2.0.2` | `2.0.3` |\n| [trio](https://github.com/python-trio/trio) | `0.29.0` | `0.31.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.5.0` |\n| [weasyprint](https://github.com/Kozea/WeasyPrint) | `65.1` | `66.0` |\n| [xxhash](https://github.com/ifduyue/python-xxhash) | `3.5.0` | `3.6.0` |\n\n\nUpdates `black` from 25.1.0 to 25.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.9.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for pre-python 3.7 \u003ccode\u003eawait/async\u003c/code\u003e as soft keywords/variable names\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash while formatting a long \u003ccode\u003edel\u003c/code\u003e statement containing tuples (\u003ca href=\"https://redirect.github.com/psf/black/issues/4628\"\u003e#4628\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash while formatting expressions using the walrus operator in complex \u003ccode\u003ewith\u003c/code\u003e\nstatements (\u003ca href=\"https://redirect.github.com/psf/black/issues/4630\"\u003e#4630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003e# fmt: skip\u003c/code\u003e followed by a comment at the end of file (\u003ca href=\"https://redirect.github.com/psf/black/issues/4635\"\u003e#4635\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when a tuple appears in the \u003ccode\u003eas\u003c/code\u003e clause of a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when tuple is used as a context manager inside a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4646\"\u003e#4646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when formatting a \u003ccode\u003e\\\u003c/code\u003e followed by a \u003ccode\u003e\\r\u003c/code\u003e followed by a comment (\u003ca href=\"https://redirect.github.com/psf/black/issues/4663\"\u003e#4663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on a \u003ccode\u003e\\\\r\\n\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4673\"\u003e#4673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on \u003ccode\u003eawait ...\u003c/code\u003e (where \u003ccode\u003e...\u003c/code\u003e is a literal \u003ccode\u003eEllipsis\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on parenthesized expression inside a type parameter bound (\u003ca href=\"https://redirect.github.com/psf/black/issues/4684\"\u003e#4684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when using line ranges excluding indented single line decorated items\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a bug where one-liner functions/conditionals marked with \u003ccode\u003e# fmt: skip\u003c/code\u003e would still\nbe formatted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4552\"\u003e#4552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003emultiline_string_handling\u003c/code\u003e with ternaries and dictionaries (\u003ca href=\"https://redirect.github.com/psf/black/issues/4657\"\u003e#4657\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003estring_processing\u003c/code\u003e would not split f-strings directly after\nexpressions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4680\"\u003e#4680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap the \u003ccode\u003ein\u003c/code\u003e clause of comprehensions across lines if necessary (\u003ca href=\"https://redirect.github.com/psf/black/issues/4699\"\u003e#4699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove parentheses around multiple exception types in \u003ccode\u003eexcept\u003c/code\u003e and \u003ccode\u003eexcept*\u003c/code\u003e without\n\u003ccode\u003eas\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4720\"\u003e#4720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e\\r\u003c/code\u003e style newlines to the potential newlines to normalize file newlines both from\nand to (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eParser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRewrite tokenizer to improve performance and compliance (\u003ca href=\"https://redirect.github.com/psf/black/issues/4536\"\u003e#4536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug where certain unusual expressions (e.g., lambdas) were not accepted in type\nparameter bounds and defaults. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4602\"\u003e#4602\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid using an extra process when running with only one worker (\u003ca href=\"https://redirect.github.com/psf/black/issues/4734\"\u003e#4734\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eIntegrations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix the version check in the vim file to reject Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4567\"\u003e#4567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnhance GitHub Action \u003ccode\u003epsf/black\u003c/code\u003e to read Black version from an additional section in\npyproject.toml: \u003ccode\u003e[project.dependency-groups]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4606\"\u003e#4606\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBuild gallery docker image with python3-slim and reduce image size (\u003ca href=\"https://redirect.github.com/psf/black/issues/4686\"\u003e#4686\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/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.9.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for pre-python 3.7 \u003ccode\u003eawait/async\u003c/code\u003e as soft keywords/variable names\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash while formatting a long \u003ccode\u003edel\u003c/code\u003e statement containing tuples (\u003ca href=\"https://redirect.github.com/psf/black/issues/4628\"\u003e#4628\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash while formatting expressions using the walrus operator in complex \u003ccode\u003ewith\u003c/code\u003e\nstatements (\u003ca href=\"https://redirect.github.com/psf/black/issues/4630\"\u003e#4630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003e# fmt: skip\u003c/code\u003e followed by a comment at the end of file (\u003ca href=\"https://redirect.github.com/psf/black/issues/4635\"\u003e#4635\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when a tuple appears in the \u003ccode\u003eas\u003c/code\u003e clause of a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when tuple is used as a context manager inside a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4646\"\u003e#4646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when formatting a \u003ccode\u003e\\\u003c/code\u003e followed by a \u003ccode\u003e\\r\u003c/code\u003e followed by a comment (\u003ca href=\"https://redirect.github.com/psf/black/issues/4663\"\u003e#4663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on a \u003ccode\u003e\\\\r\\n\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4673\"\u003e#4673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on \u003ccode\u003eawait ...\u003c/code\u003e (where \u003ccode\u003e...\u003c/code\u003e is a literal \u003ccode\u003eEllipsis\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on parenthesized expression inside a type parameter bound (\u003ca href=\"https://redirect.github.com/psf/black/issues/4684\"\u003e#4684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when using line ranges excluding indented single line decorated items\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a bug where one-liner functions/conditionals marked with \u003ccode\u003e# fmt: skip\u003c/code\u003e would still\nbe formatted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4552\"\u003e#4552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003emultiline_string_handling\u003c/code\u003e with ternaries and dictionaries (\u003ca href=\"https://redirect.github.com/psf/black/issues/4657\"\u003e#4657\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003estring_processing\u003c/code\u003e would not split f-strings directly after\nexpressions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4680\"\u003e#4680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap the \u003ccode\u003ein\u003c/code\u003e clause of comprehensions across lines if necessary (\u003ca href=\"https://redirect.github.com/psf/black/issues/4699\"\u003e#4699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove parentheses around multiple exception types in \u003ccode\u003eexcept\u003c/code\u003e and \u003ccode\u003eexcept*\u003c/code\u003e without\n\u003ccode\u003eas\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4720\"\u003e#4720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e\\r\u003c/code\u003e style newlines to the potential newlines to normalize file newlines both from\nand to (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eParser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRewrite tokenizer to improve performance and compliance (\u003ca href=\"https://redirect.github.com/psf/black/issues/4536\"\u003e#4536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug where certain unusual expressions (e.g., lambdas) were not accepted in type\nparameter bounds and defaults. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4602\"\u003e#4602\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid using an extra process when running with only one worker (\u003ca href=\"https://redirect.github.com/psf/black/issues/4734\"\u003e#4734\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eIntegrations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix the version check in the vim file to reject Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4567\"\u003e#4567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnhance GitHub Action \u003ccode\u003epsf/black\u003c/code\u003e to read Black version from an additional section in\npyproject.toml: \u003ccode\u003e[project.dependency-groups]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4606\"\u003e#4606\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/black/commit/af0ba72a73598c76189d6dd1b21d8532255d5942\"\u003e\u003ccode\u003eaf0ba72\u003c/code\u003e\u003c/a\u003e Prepare docs for release 25.9.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/ffc01a027580d99401abb3197e83d50dc4f4c746\"\u003e\u003ccode\u003effc01a0\u003c/code\u003e\u003c/a\u003e Fix schema generation error caused by new click version (\u003ca href=\"https://redirect.github.com/psf/black/issues/4750\"\u003e#4750\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/626b32fe2b5387656be6694da9a4b7a3148fb892\"\u003e\u003ccode\u003e626b32f\u003c/code\u003e\u003c/a\u003e Add normalizing for \u003ccode\u003e\\r\u003c/code\u003e style newlines (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/57a461258f324e33bca189b2eb49d7f7a944ffe7\"\u003e\u003ccode\u003e57a4612\u003c/code\u003e\u003c/a\u003e Fix mypy type issue (\u003ca href=\"https://redirect.github.com/psf/black/issues/4745\"\u003e#4745\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/4f6ad7cf8c3092e0fb4d82f54fe77ccde134468a\"\u003e\u003ccode\u003e4f6ad7c\u003c/code\u003e\u003c/a\u003e Wrap the \u003ccode\u003ein\u003c/code\u003e clause of comprehensions across lines if necessary (\u003ca href=\"https://redirect.github.com/psf/black/issues/4699\"\u003e#4699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/24f516961720c5578069dee30415b776359b7be5\"\u003e\u003ccode\u003e24f5169\u003c/code\u003e\u003c/a\u003e ci: Run diff-shades on unstable instead of preview (\u003ca href=\"https://redirect.github.com/psf/black/issues/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/4d55e6017993ee3f0927524e8bc19ead8de9e8ed\"\u003e\u003ccode\u003e4d55e60\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/0cf39efdbc3aaea455f95d31e5b42efb6bd61478\"\u003e\u003ccode\u003e0cf39ef\u003c/code\u003e\u003c/a\u003e Improve the performance of get_string_prefix (\u003ca href=\"https://redirect.github.com/psf/black/issues/4742\"\u003e#4742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/1f779dec013db37475fa56a5c9939a09eab7e7d6\"\u003e\u003ccode\u003e1f779de\u003c/code\u003e\u003c/a\u003e Fix line ranges decorator edge case (\u003ca href=\"https://redirect.github.com/psf/black/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/203fd6b5cdad975178b8174394a7f7fb13d14f02\"\u003e\u003ccode\u003e203fd6b\u003c/code\u003e\u003c/a\u003e Optimize Line string method (\u003ca href=\"https://redirect.github.com/psf/black/issues/4739\"\u003e#4739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/25.1.0...25.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.1.31 to 2025.8.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1\"\u003e\u003ccode\u003eddd90c6\u003c/code\u003e\u003c/a\u003e 2025.07.14 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52\"\u003e\u003ccode\u003ed905221\u003c/code\u003e\u003c/a\u003e 2025.07.09 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e767d5938eddddf804216cec93a55c85129c5f2d\"\u003e\u003ccode\u003ee767d59\u003c/code\u003e\u003c/a\u003e 2025.06.15 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/3e7076557d66b598fcca462e422dc988f09a6802\"\u003e\u003ccode\u003e3e70765\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.5.0 to 5.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/9afd2ff407b8a0638988c952a6636b8dd623af7c\"\u003e\u003ccode\u003e9afd2ff\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.2.1 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7c816cbc9cf621b3ddc8cd7fa7eda3f36982620\"\u003e\u003ccode\u003ed7c816c\u003c/code\u003e\u003c/a\u003e remove code that's no longer required that 3.7 is our minimum (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/351\"\u003e#351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/189961379209973abd0dd6304297f03e2359e1b9\"\u003e\u003ccode\u003e1899613\u003c/code\u003e\u003c/a\u003e Declare setuptools as the build backend in pyproject.toml (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/350\"\u003e#350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c8741423d67e1025c0bdad5225ded05cf962f207\"\u003e\u003ccode\u003ec874142\u003c/code\u003e\u003c/a\u003e update CI for ubuntu 20.04 deprecation (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/348\"\u003e#348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/275c9eb55733a464589c15fb4566fddd4598e5b2\"\u003e\u003ccode\u003e275c9eb\u003c/code\u003e\u003c/a\u003e 2025.04.26 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2025.08.03\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\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.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\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/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\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/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\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/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\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.1 to 3.4.3\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.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\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.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\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/46f662da20edeced520c8819965a37eefbbc85de\"\u003e\u003ccode\u003e46f662d\u003c/code\u003e\u003c/a\u003e Release 3.4.3 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/638\"\u003e#638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1a059b26c155dd5fca408b0e0145c930633c4bf2\"\u003e\u003ccode\u003e1a059b2\u003c/code\u003e\u003c/a\u003e :wrench: skip building on freethreaded as we're not confident it is stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2275e3d3fea2bf6232661f1e9c21e7b81428e2a6\"\u003e\u003ccode\u003e2275e3d\u003c/code\u003e\u003c/a\u003e :pencil: final note in CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/c96acdfdb34b5b1deb6f70803167bae89b209832\"\u003e\u003ccode\u003ec96acdf\u003c/code\u003e\u003c/a\u003e :pencil: update release date on CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/43e5460518003df24ad1a3e7b5c0a34445395012\"\u003e\u003ccode\u003e43e5460\u003c/code\u003e\u003c/a\u003e :pencil: update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f277074e281a070cfa64fc91c46f8291043fc37c\"\u003e\u003ccode\u003ef277074\u003c/code\u003e\u003c/a\u003e :wrench: automatically lower confidence on small bytes str on non Unicode res...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/15ae2411072b5e026f2c9d6ec81b55f75af7dcf2\"\u003e\u003ccode\u003e15ae241\u003c/code\u003e\u003c/a\u003e :bug: automatically fallback on valid UTF-16 or UTF-32 even if the md says it...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/37397c1799a05454ab42fbbc94a7643cdb277924\"\u003e\u003ccode\u003e37397c1\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14 in nox test_mypyc session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/cb82537ecad195f48383b92e330351cea1fc6bc8\"\u003e\u003ccode\u003ecb82537\u003c/code\u003e\u003c/a\u003e :rewind: revert license due to compat python 3.7 issue setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/6a2efeb4c6e205964b61008b0c36ddf88c321543\"\u003e\u003ccode\u003e6a2efeb\u003c/code\u003e\u003c/a\u003e :art: fix linter errors\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.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.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.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.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-2-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-2-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/25\"\u003ehttps://github.com/pallets/click/milestone/25\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2952\"\u003e#2952\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2956\"\u003e#2956\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying functino \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2777\"\u003e#2777\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2990\"\u003e#2990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2911\"\u003e#2911\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3004\"\u003e#3004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2703\"\u003e#2703\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2846\"\u003e#2846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2971\"\u003e#2971\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2972\"\u003e#2972\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/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n:issue:\u003ccode\u003e2952\u003c/code\u003e :pr:\u003ccode\u003e2956\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying function \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. :issue:\u003ccode\u003e2777\u003c/code\u003e :pr:\u003ccode\u003e2990\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. Refs :issue:\u003ccode\u003e2911\u003c/code\u003e :pr:\u003ccode\u003e3004\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. :issue:\u003ccode\u003e2703\u003c/code\u003e :pr:\u003ccode\u003e2846\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. :issue:\u003ccode\u003e2971\u003c/code\u003e :pr:\u003ccode\u003e2972\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix a rare race in \u003ccode\u003eclick.testing.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\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/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `exceptiongroup` from 1.2.2 to 1.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/exceptiongroup/releases\"\u003eexceptiongroup's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003e**kwargs\u003c/code\u003e to function and method signatures as appropriate to match the signatures in the standard library\u003c/li\u003e\n\u003cli\u003eIn line with the stdlib typings in typeshed, updated \u003ccode\u003e(Base)ExceptionGroup\u003c/code\u003e generic types to define defaults for their generic arguments (defaulting to \u003ccode\u003eBaseExceptionGroup[BaseException]\u003c/code\u003e and \u003ccode\u003eExceptionGroup[Exception]\u003c/code\u003e) (PR by \u003ca href=\"https://github.com/mikenerone\"\u003e\u003ccode\u003e@​mikenerone\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eBaseExceptionGroup.__init__()\u003c/code\u003e to directly call \u003ccode\u003eBaseException.__init__()\u003c/code\u003e instead of the superclass \u003ccode\u003e__init__()\u003c/code\u003e in order to emulate the CPython behavior (broken or not) (PR by \u003ca href=\"https://github.com/cfbolz\"\u003e\u003ccode\u003e@​cfbolz\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the \u003ccode\u003eexceptions\u003c/code\u003e attribute to always return the same tuple of exceptions, created from the original exceptions sequence passed to \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e to match CPython behavior (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/143\"\u003e#143\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/agronholm/exceptiongroup/blob/main/CHANGES.rst\"\u003eexceptiongroup's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1.3.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003e**kwargs\u003c/code\u003e to function and method signatures as appropriate to match the\nsignatures in the standard library\u003c/li\u003e\n\u003cli\u003eIn line with the stdlib typings in typeshed, updated \u003ccode\u003e(Base)ExceptionGroup\u003c/code\u003e generic\ntypes to define defaults for their generic arguments (defaulting to\n\u003ccode\u003eBaseExceptionGroup[BaseException]\u003c/code\u003e and \u003ccode\u003eExceptionGroup[Exception]\u003c/code\u003e)\n(PR by \u003ca href=\"https://github.com/mikenerone\"\u003e\u003ccode\u003e@​mikenerone\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eBaseExceptionGroup.__init__()\u003c/code\u003e to directly call\n\u003ccode\u003eBaseException.__init__()\u003c/code\u003e instead of the superclass \u003ccode\u003e__init__()\u003c/code\u003e in order to\nemulate the CPython behavior (broken or not) (PR by \u003ca href=\"https://github.com/cfbolz\"\u003e\u003ccode\u003e@​cfbolz\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the \u003ccode\u003eexceptions\u003c/code\u003e attribute to always return the same tuple of exceptions,\ncreated from the original exceptions sequence passed to \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e to\nmatch CPython behavior\n(\u003ccode\u003e[#143](https://github.com/agronholm/exceptiongroup/issues/143) \u0026lt;https://github.com/agronholm/exceptiongroup/issues/143\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.2.2\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an \u003ccode\u003eassert\u003c/code\u003e in \u003ccode\u003eexceptiongroup._formatting\u003c/code\u003e that caused compatibility\nissues with Sentry (\u003ccode\u003e[#123](https://github.com/agronholm/exceptiongroup/issues/123) \u0026lt;https://github.com/agronholm/exceptiongroup/issues/123\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.2.1\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated the copying of \u003ccode\u003e__notes__\u003c/code\u003e to match CPython behavior (PR by CF Bolz-Tereick)\u003c/li\u003e\n\u003cli\u003eCorrected the type annotation of the exception handler callback to accept a\n\u003ccode\u003eBaseExceptionGroup\u003c/code\u003e instead of \u003ccode\u003eBaseException\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFixed type errors on Python \u0026lt; 3.10 and the type annotation of \u003ccode\u003esuppress()\u003c/code\u003e\n(PR by John Litborn)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.2.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded special monkeypatching if \u003ccode\u003eApport \u0026lt;https://github.com/canonical/apport\u0026gt;\u003c/code\u003e_ has\noverridden \u003ccode\u003esys.excepthook\u003c/code\u003e so it will format exception groups correctly\n(PR by John Litborn)\u003c/li\u003e\n\u003cli\u003eAdded a backport of \u003ccode\u003econtextlib.suppress()\u003c/code\u003e from Python 3.12.1 which also handles\nsuppressing exceptions inside exception groups\u003c/li\u003e\n\u003cli\u003eFixed bare \u003ccode\u003eraise\u003c/code\u003e in a handler reraising the original naked exception rather than\nan exception group which is what is raised when you do a \u003ccode\u003eraise\u003c/code\u003e in an \u003ccode\u003eexcept*\u003c/code\u003e\nhandler\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.1.3\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecatch()\u003c/code\u003e now raises a \u003ccode\u003eTypeError\u003c/code\u003e if passed an async exception handler instead of\njust giving a \u003ccode\u003eRuntimeWarning\u003c/code\u003e about the coroutine never being awaited. (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/66\"\u003e#66\u003c/a\u003e, PR by\nJohn Litborn)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/exceptiongroup/commit/77fba8a871408ff2c48f536e5e73b1918239ba5f\"\u003e\u003ccode\u003e77fba8a\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/5e153aa379ac53af79cc7f5e287f77929cb4d0dc\"\u003e\u003ccode\u003e5e153aa\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Migrated test dependencies to dependency groups\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/5000bfea208ad59e3a20e2fb91a513ad559711b1\"\u003e\u003ccode\u003e5000bfe\u003c/code\u003e\u003c/a\u003e Migrated tox configuration to native TOML\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/427220d67a52585e98575103b090b5fdaf87a899\"\u003e\u003ccode\u003e427220d\u003c/code\u003e\u003c/a\u003e Updated pytest options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/4ca264fa3605d52067c20b351a0d3b947fa1f363\"\u003e\u003ccode\u003e4ca264f\u003c/code\u003e\u003c/a\u003e Migrated test dependencies to dependency groups\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/163c3a8cb27f8a5325258b5a83e7cf8fc002c3b7\"\u003e\u003ccode\u003e163c3a8\u003c/code\u003e\u003c/a\u003e Marked test_exceptions_mutate_original_sequence as xfail on pypy3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/a1765740db2d55d1eb91d67a8fbbb355caf7881b\"\u003e\u003ccode\u003ea176574\u003c/code\u003e\u003c/a\u003e Always create the exceptions tuple at init and return it from the exceptions ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/550b79621cc35892413fa91903a1d6c7951d0449\"\u003e\u003ccode\u003e550b796\u003c/code\u003e\u003c/a\u003e Added BaseExceptionGroup.\u003cstrong\u003einit\u003c/strong\u003e, following CPython (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/2a84dfd5599bca0c653143f0f4252d38afac9867\"\u003e\u003ccode\u003e2a84dfd\u003c/code\u003e\u003c/a\u003e Added typevar defaults to (Base)ExceptionGroup (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/147\"\u003e#147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/fb9133b495fc82bc2907e8cfbdff6c6dc3087e2f\"\u003e\u003ccode\u003efb9133b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/exceptiongroup/compare/1.2.2...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask` from 3.1.0 to 3.1.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/2c1b30d0503cfb064f1cb252e6614a06915a362a\"\u003e\u003ccode\u003e2c1b30d\u003c/code\u003e\u003c/a\u003e release version 3.1.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/1292419ddfc6a14fc7f85b5ed7efcc2d215f1ad3\"\u003e\u003ccode\u003e1292419\u003c/code\u003e\u003c/a\u003e Update GitHub Actions workflow for artifact handling (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5795\"\u003e#5795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4dd52ca9c768c9b6d04180f0547d6f4b6e34f211\"\u003e\u003ccode\u003e4dd52ca\u003c/code\u003e\u003c/a\u003e Update GitHub Actions workflow for artifact handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/55c62556571ee46a94da174643b50ece06edead4\"\u003e\u003ccode\u003e55c6255\u003c/code\u003e\u003c/a\u003e update dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/d8259eb11900285af9b80b0fa47f841174c054e3\"\u003e\u003ccode\u003ed8259eb\u003c/code\u003e\u003c/a\u003e use Jinja name consistently\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/38b4c1e19b50494cfcdc9332899e09b7fed34979\"\u003e\u003ccode\u003e38b4c1e\u003c/code\u003e\u003c/a\u003e refactor stream_with_context for async views (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5799\"\u003e#5799\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/9822a0351574790cb66c652fcc396ad7aa2b09d8\"\u003e\u003ccode\u003e9822a03\u003c/code\u003e\u003c/a\u003e refactor stream_with_context for async views\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/49b7e7bc8fb69d605719991d1c0a99fcee689053\"\u003e\u003ccode\u003e49b7e7b\u003c/code\u003e\u003c/a\u003e security docs for TRUSTED_HOSTS (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5798\"\u003e#5798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/b228ca3d87745b746d904a2108429617a814ffda\"\u003e\u003ccode\u003eb228ca3\u003c/code\u003e\u003c/a\u003e security docs for TRUSTED_HOSTS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ff64079a516c269f171ababf3d92b86886a62ffd\"\u003e\u003ccode\u003eff64079\u003c/code\u003e\u003c/a\u003e update flask-talisman link\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.1.0...3.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fonttools` from 4.57.0 to 4.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fonttools/fonttools/releases\"\u003efonttools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.60.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ufoLib] Reverted accidental method name change in \u003ccode\u003eUFOReader.getKerningGroupConversionRenameMaps\u003c/code\u003e\nthat broke compatibility with downstream projects like defcon (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3948\"\u003e#3948\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3947\"\u003e#3947\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/robotools/defcon/issues/478\"\u003erobotools/defcon#478\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ufoLib] Added test coverage for \u003ccode\u003egetKerningGroupConversionRenameMaps\u003c/code\u003e method (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3950\"\u003e#3950\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Don't try to subset BASE table; pass it through by default instead (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3949\"\u003e#3949\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Remove empty BaseRecord entries in MarkBasePos lookups (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3897\"\u003e#3897\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3892\"\u003e#3892\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Add pruning for MarkLigPos and MarkMarkPos lookups (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3946\"\u003e#3946\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Remove duplicate features when subsetting (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3945\"\u003e#3945\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[Docs] Added documentation for the visitor module (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3944\"\u003e#3944\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.60.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e[pointPen] Allow \u003ccode\u003ereverseFlipped\u003c/code\u003e parameter of \u003ccode\u003eDecomposingPointPen\u003c/code\u003e to take a \u003ccode\u003eReverseFlipped\u003c/code\u003e enum value to control whether/how to reverse contour direction of flipped components, in addition to the existing True/False. This allows to set \u003ccode\u003eReverseFlipped.ON_CURVE_FIRST\u003c/code\u003e to ensure that the decomposed outline starts with an on-curve point before being reversed, for better consistency with other segment-oriented contour transformations. The change is backward compatible, and the default behavior hasn't changed (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3934\"\u003e#3934\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[filterPen] Added \u003ccode\u003eContourFilterPointPen\u003c/code\u003e, base pen for buffered contour operations, and \u003ccode\u003eOnCurveStartPointPen\u003c/code\u003e filter to ensure contours start with an on-curve point (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3934\"\u003e#3934\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[cu2qu] Fixed difference in cython vs pure-python complex division by real number (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3930\"\u003e#3930\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[varLib.avar] Refactored and added some new sub-modules and scripts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3926\"\u003e#3926\u003c/a\u003e).\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.build\u003c/code\u003e module to build avar (and a missing fvar) binaries into a possibly empty TTFont,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.unbuild\u003c/code\u003e module to print a .designspace snippet that would generate the same avar binary,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.map\u003c/code\u003e module to take TTFont and do the mapping, in user/normalized space,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.plan\u003c/code\u003e module moved from \u003ccode\u003evarLib.avarPlanner\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe bare \u003ccode\u003efonttools varLib.avar\u003c/code\u003e script is deprecated, in favour of \u003ccode\u003efonttools varLib.avar.build\u003c/code\u003e (or \u003ccode\u003eunbuild\u003c/code\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[interpolatable] Clarify \u003ccode\u003elinear_sum_assignment\u003c/code\u003e backend options and minimal dependency usage (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3927\"\u003e#3927\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[post] Speed up \u003ccode\u003ebuild_psNameMapping\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3923\"\u003e#3923\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[ufoLib] Added typing annotations to fontTools.ufoLib (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3875\"\u003e#3875\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.59.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[varLib] Clear \u003ccode\u003eUSE_MY_METRICS\u003c/code\u003e component flags when inconsistent across masters (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3912\"\u003e#3912\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Avoid negative advance width/height values when instatiating HVAR/VVAR, (unlikely in well-behaved fonts) (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3918\"\u003e#3918\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Fix shaping behaviour when pruning empty mark sets (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3915\"\u003e#3915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/harfbuzz/harfbuzz/issues/5499\"\u003eharfbuzz/harfbuzz#5499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cu2qu] Fixed \u003ccode\u003edot()\u003c/code\u003e product of perpendicular vectors not always returning exactly 0.0 in all Python implementations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3911\"\u003e#3911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Implemented fully-instantiating \u003ccode\u003eavar2\u003c/code\u003e fonts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3909\"\u003e#3909\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[feaLib] Allow float values in \u003ccode\u003eVariableScalar\u003c/code\u003e's axis locations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3906\"\u003e#3906\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3907\"\u003e#3907\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cu2qu] Handle special case in \u003ccode\u003ecalc_intersect\u003c/code\u003e for degenerate cubic curves where 3 to 4 control points are equal (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3904\"\u003e#3904\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.59.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[featureVars] Update OS/2.usMaxContext if possible after addFeatureVariationsRaw (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3894\"\u003e#3894\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[vhmtx] raise TTLibError('not enough data...') when hmtx/vmtx are truncated (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3843\"\u003e#3843\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3901\"\u003e#3901\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[feaLib] Combine duplicate features that have the same set of lookups regardless of the order in which those lookups are added to the feature (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3895\"\u003e#3895\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib] Deprecate \u003ccode\u003evarLib.mutator\u003c/code\u003e in favor of \u003ccode\u003evarLib.instancer\u003c/code\u003e. The latter provides equivalent full (static font) instancing in addition to partial VF instancing.\u003cbr /\u003e\nCLI users should replace \u003ccode\u003efonttools varLib.mutator\u003c/code\u003e with \u003ccode\u003efonttools varLib.instancer\u003c/code\u003e. API users should migrate to \u003ccode\u003efontTools.varLib.instancer.instantiateVariableFont\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/2680\"\u003e#2680\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.59.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved hard-dependency on pyfilesystem2 (\u003ccode\u003efs\u003c/code\u003e package) from \u003ccode\u003efonttools[ufo]\u003c/code\u003e extra. This is replaced by the \u003ccode\u003efontTools.misc.filesystem\u003c/code\u003e package, a stdlib-only, drop-in replacement for the subset of the pyfilesystem2's API used by \u003ccode\u003efontTools.ufoLib\u003c/code\u003e. The latter should continue to work with the upstream \u003ccode\u003efs\u003c/code\u003e (we even test with/without). However, clients who wish to continue using \u003ccode\u003efs\u003c/code\u003e can do so by depending on it directly instead of via the \u003ccode\u003efonttools[ufo]\u003c/code\u003e extra (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3885\"\u003e#3885\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3620\"\u003e#3620\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[xmlWriter] Replace illegal XML characters (e.g. control or non-characters) with \u0026quot;?\u0026quot; when dumping to ttx (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3868\"\u003e#3868\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/71\"\u003e#71\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.hvar] Fixed vertical metrics fields copy/pasta error (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3884\"\u003e#3884\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMicro optimizations in ttLib and sstruct modules (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3878\"\u003e#3878\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3879\"\u003e#3879\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[unicodedata] Add Garay script to RTL_SCRIPTS (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3882\"\u003e#3882\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[roundingPen] Remove unreliable kwarg usage. Argument names aren’t consistent among point pens’ \u003ccode\u003e.addComponent()\u003c/code\u003e implementations, in particular \u003ccode\u003ebaseGlyphName\u003c/code\u003e vs \u003ccode\u003eglyphName\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3880\"\u003e#3880\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.58.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/fonttools/fonttools/blob/main/NEWS.rst\"\u003efonttools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.60.1 (released 2025-09-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ufoLib] Reverted accidental method name change in \u003ccode\u003eUFOReader.getKerningGroupConversionRenameMaps\u003c/code\u003e\nthat broke compatibility with downstream projects like defcon (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3948\"\u003e#3948\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3947\"\u003e#3947\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/robotools/defcon/issues/478\"\u003erobotools/defcon#478\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ufoLib] Added test coverage for \u003ccode\u003egetKerningGroupConversionRenameMaps\u003c/code\u003e method (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3950\"\u003e#3950\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Don't try to subset BASE table; pass it through by default instead (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3949\"\u003e#3949\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Remove empty BaseRecord entries in MarkBasePos lookups (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3897\"\u003e#3897\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3892\"\u003e#3892\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Add pruning for MarkLigPos and MarkMarkPos lookups (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3946\"\u003e#3946\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Remove duplicate features when subsetting (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3945\"\u003e#3945\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[Docs] Added documentation for the visitor module (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3944\"\u003e#3944\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.60.0 (released 2025-09-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[pointPen] Allow \u003ccode\u003ereverseFlipped\u003c/code\u003e parameter of \u003ccode\u003eDecomposingPointPen\u003c/code\u003e to take a \u003ccode\u003eReverseFlipped\u003c/code\u003e\nenum value to control whether/how to reverse contour direction of flipped components, in addition to\nthe existing True/False. This allows to set \u003ccode\u003eReverseFlipped.ON_CURVE_FIRST\u003c/code\u003e to ensure that\nthe decomposed outline starts with an on-curve point before being reversed, for better consistency\nwith other segment-oriented contour transformations. The change is backward compatible, and the\ndefault behavior hasn't changed (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3934\"\u003e#3934\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[filterPen] Added \u003ccode\u003eContourFilterPointPen\u003c/code\u003e, base pen for buffered contour operations, and\n\u003ccode\u003eOnCurveStartPointPen\u003c/code\u003e filter to ensure contours start with an on-curve point (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3934\"\u003e#3934\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cu2qu] Fixed difference in cython vs pure-python complex division by real number (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3930\"\u003e#3930\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.avar] Refactored and added some new sub-modules and scripts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3926\"\u003e#3926\u003c/a\u003e).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.build\u003c/code\u003e module to build avar (and a missing fvar) binaries into a possibly empty TTFont,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.unbuild\u003c/code\u003e module to print a .designspace snippet that would generate the same avar binary,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.map\u003c/code\u003e module to take TTFont and do the mapping, in user/normalized space,\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003evarLib.avar.plan\u003c/code\u003e module moved from \u003ccode\u003evarLib.avarPlanner\u003c/code\u003e.\nThe bare \u003ccode\u003efonttools varLib.avar\u003c/code\u003e script is deprecated, in favour of \u003ccode\u003efonttools varLib.avar.build\u003c/code\u003e (or \u003ccode\u003eunbuild\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e[interpolatable] Clarify \u003ccode\u003elinear_sum_assignment\u003c/code\u003e backend options and minimal dependency\nusage (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3927\"\u003e#3927\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[post] Speed up \u003ccode\u003ebuild_psNameMapping\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3923\"\u003e#3923\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ufoLib] Added typing annotations to fontTools.ufoLib (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3875\"\u003e#3875\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.59.2 (released 2025-08-27)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[varLib] Clear \u003ccode\u003eUSE_MY_METRICS\u003c/code\u003e component flags when inconsistent across masters (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3912\"\u003e#3912\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Avoid negative advance width/height values when instatiating HVAR/VVAR,\n(unlikely in well-behaved fonts) (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3918\"\u003e#3918\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Fix shaping behaviour when pruning empty mark sets (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3915\"\u003e#3915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/harfbuzz/harfbuzz/issues/5499\"\u003eharfbuzz/harfbuzz#5499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cu2qu] Fixed \u003ccode\u003edot()\u003c/code\u003e product of perpendicular vectors not always returning exactly 0.0\nin all Python implementations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3911\"\u003e#3911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Implemented fully-instantiating \u003ccode\u003eavar2\u003c/code\u003e fonts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3909\"\u003e#3909\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[feaLib] Allow float values in \u003ccode\u003eVariableScalar\u003c/code\u003e's axis locations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3906\"\u003e#3906\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3907\"\u003e#3907\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cu2qu] Handle special case in \u003ccode\u003ecalc_intersect\u003c/code\u003e for degenerate cubic curves where 3 to 4\ncontrol points are equal (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3904\"\u003e#3904\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e4.59.1 (released 2025-08-14)\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/fonttools/fonttools/commit/af032c141b452f47f35e93f1c5ca2004f133cdcf\"\u003e\u003ccode\u003eaf032c1\u003c/code\u003e\u003c/a\u003e Release 4.60.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/d47d26167836eefb08bc2051647f9a8d2195e00b\"\u003e\u003ccode\u003ed47d261\u003c/code\u003e\u003c/a\u003e Update NEWS.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/c734ff27cadfabadef83089df65091a5c6c50e9a\"\u003e\u003ccode\u003ec734ff2\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3950\"\u003e#3950\u003c/a\u003e from fonttools/test-ufolib-get-kerning-group-convers...\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/Shy/party/pull/453","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shy%2Fparty/issues/453","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/453/packages"}},{"old_version":"0.30.0","new_version":"0.31.0","update_type":"minor","path":"/automationTest","pr_created_at":"2025-10-01T18:01:39.000Z","version_change":"0.30.0 → 0.31.0","issue":{"uuid":"2879137108","node_id":"PR_kwDOGwn7CM6rnCVU","number":444,"state":"open","title":"Bump trio from 0.30.0 to 0.31.0 in /automationTest","user":"dependabot[bot]","labels":["Dependabot"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-01T18:01:39.000Z","updated_at":"2025-10-01T18:02:08.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"trio","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/python-trio/trio"}],"path":"/automationTest","ecosystem":"pip"},"body":"Bumps [trio](https://github.com/python-trio/trio) 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/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003ebool(trio.Event)\u003c/code\u003e and have it raise a \u003ccode\u003eDeprecationWarning\u003c/code\u003e and tell users to use \u003ccode\u003etrio.Event.is_set\u003c/code\u003e instead. This is an alternative to \u003ccode\u003emypy --enable-error-code=truthy-bool\u003c/code\u003e for users who don't use type checking. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3322\"\u003epython-trio/trio#3322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen misnesting nurseries you now get a helpful \u003ccode\u003eRuntimeError\u003c/code\u003e instead of a catastrophic \u003ccode\u003eTrioInternalError\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3307\"\u003epython-trio/trio#3307\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/python-trio/trio/commit/94b7244505212061e21507c84725ef28be2705dd\"\u003e\u003ccode\u003e94b7244\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/439de50f5e3c9a718a2b4ed5790f27198de33e13\"\u003e\u003ccode\u003e439de50\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/cc148cfc0f23934aa603012b4f152c990e375f62\"\u003e\u003ccode\u003ecc148cf\u003c/code\u003e\u003c/a\u003e Suppress GeneratorExit from \u003ccode\u003e.aclose()\u003c/code\u003e for \u003ccode\u003eas_safe_channel\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3325\"\u003e#3325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/fc352b2b8ee84071273142375d8babb44333d115\"\u003e\u003ccode\u003efc352b2\u003c/code\u003e\u003c/a\u003e check for nursery misnesting on task exit (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/5bfba27b23f9a1f1bac86880b341bcfab54e43f2\"\u003e\u003ccode\u003e5bfba27\u003c/code\u003e\u003c/a\u003e Improve REPL KI (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3030\"\u003e#3030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/7cc7f6b9249f654627fb6b6737115a0900704c19\"\u003e\u003ccode\u003e7cc7f6b\u003c/code\u003e\u003c/a\u003e Define \u003ccode\u003etrio.Event.__bool__()\u003c/code\u003e to reduce bugs (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3322\"\u003e#3322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/8dd7d8ea38346b5effdfcc0669b356380eb670c9\"\u003e\u003ccode\u003e8dd7d8e\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3323\"\u003e#3323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/02c3794913a04a030f1f2ea76fb67b69abd90c3c\"\u003e\u003ccode\u003e02c3794\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003etyping_extensions\u003c/code\u003e requirement\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c3a0a762c343e5e4876725da18714bc79f38314f\"\u003e\u003ccode\u003ec3a0a76\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e,\u003c/code\u003e -\u0026gt; \u003ccode\u003e;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/e34ce248d6d1713a1986d13c93f2f49dda457228\"\u003e\u003ccode\u003ee34ce24\u003c/code\u003e\u003c/a\u003e Add message properly\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trio\u0026package-manager=pip\u0026previous-version=0.30.0\u0026new-version=0.31.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\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/Interstellarkai/edUFind/pull/444","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Interstellarkai%2FedUFind/issues/444","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/444/packages"}},{"old_version":"0.30.0","new_version":"0.31.0","update_type":"minor","path":null,"pr_created_at":"2025-10-01T00:05:37.000Z","version_change":"0.30.0 → 0.31.0","issue":{"uuid":"2876361201","node_id":"PR_kwDOJ70Ows6rccnx","number":380,"state":"open","title":"Bump the python-packages group across 1 directory with 12 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-01T00:05:37.000Z","updated_at":"2025-10-01T00:05:38.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":12,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.11.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"redis","old_version":"6.2.0","new_version":"6.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"coverage","old_version":"7.10.1","new_version":"7.10.7","repository_url":"https://github.com/nedbat/coveragepy"},{"name":"hatch","old_version":"1.14.1","new_version":"1.14.2","repository_url":"https://github.com/pypa/hatch"},{"name":"mkdocs-material","old_version":"9.6.16","new_version":"9.6.21","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mypy","old_version":"1.17.1","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"pytest","old_version":"8.4.1","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"ruff","old_version":"0.12.7","new_version":"0.13.2","repository_url":"https://github.com/astral-sh/ruff"},{"name":"trio","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/python-trio/trio"},{"name":"types-boto3","old_version":"1.40.0","new_version":"1.40.42","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"types-pyyaml","old_version":"6.0.12.20250516","new_version":"6.0.12.20250915","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 12 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.11.0` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [redis](https://github.com/redis/redis-py) | `6.2.0` | `6.4.0` |\n| [coverage](https://github.com/nedbat/coveragepy) | `7.10.1` | `7.10.7` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.14.2` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.6.16` | `9.6.21` |\n| [mypy](https://github.com/python/mypy) | `1.17.1` | `1.18.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `8.4.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.7` | `0.13.2` |\n| [trio](https://github.com/python-trio/trio) | `0.30.0` | `0.31.0` |\n| [types-boto3](https://github.com/youtype/mypy_boto3_builder) | `1.40.0` | `1.40.42` |\n| [types-pyyaml](https://github.com/typeshed-internal/stub_uploader) | `6.0.12.20250516` | `6.0.12.20250915` |\n\n\nUpdates `anyio` from 4.9.0 to 4.11.0\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.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003eCancelScope.cancel()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by passing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to \u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e keyword argument (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/256\"\u003e#256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically handle all async tests (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all socket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/857\"\u003e#857\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously raised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise \u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but \u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this scenario. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing users to inject data directly into the buffer\u003c/li\u003e\n\u003cli\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\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/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.11.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to\n\u003ccode\u003eCancelScope.cancel()\u003c/code\u003e)\n(\u003ccode\u003e[#975](https://github.com/agronholm/anyio/issues/975) \u0026lt;https://github.com/agronholm/anyio/pull/975\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by\npassing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to\n\u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e\nkeyword argument (\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\n(\u003ccode\u003e[#971](https://github.com/agronholm/anyio/issues/971) \u0026lt;https://github.com/agronholm/anyio/pull/971\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio\n(\u003ccode\u003e[#974](https://github.com/agronholm/anyio/issues/974) \u0026lt;https://github.com/agronholm/anyio/pull/974\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e\n(\u003ccode\u003e[#964](https://github.com/agronholm/anyio/issues/964) \u0026lt;https://github.com/agronholm/anyio/pull/964\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all\nsocket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e\n(\u003ccode\u003e[#857](https://github.com/agronholm/anyio/issues/857) \u0026lt;https://github.com/agronholm/anyio/issues/857\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously\nraised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but\n\u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this\nscenario. (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a hierarchy of connectable stream classes for transparently connecting to\nvarious remote or local endpoints for exchanging bytes or objects\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and\n\u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context\nmanagers, particularly cancel scopes or task groups\n(\u003ccode\u003e[#905](https://github.com/agronholm/anyio/issues/905) \u0026lt;https://github.com/agronholm/anyio/pull/905\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and\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/08737af202f6610cdb8ba53fecaefd9c03269637\"\u003e\u003ccode\u003e08737af\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/8bb9fe04a1c0a4b6615c843d4a88bba38a386059\"\u003e\u003ccode\u003e8bb9fe0\u003c/code\u003e\u003c/a\u003e Fixed the inconsistent exception on sending to a closed TCP stream (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/963709358a05ced66986e928b593b4bd82422981\"\u003e\u003ccode\u003e9637093\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1bc6ee95a75007681ef9cb4eec0369838b390e9\"\u003e\u003ccode\u003ef1bc6ee\u003c/code\u003e\u003c/a\u003e Fixed changelog entry formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0b58964a26c68ca427b711bbe8536f61ed900133\"\u003e\u003ccode\u003e0b58964\u003c/code\u003e\u003c/a\u003e Mentioned the sub-interpreter support in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1ed112c65628d3cce312e7b6875b9f914d174a71\"\u003e\u003ccode\u003e1ed112c\u003c/code\u003e\u003c/a\u003e Ensure same port is used for IPv4/IPv6 when creating TCP listener with local_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aceeee09868642311a96626924f2f09c088a26c0\"\u003e\u003ccode\u003eaceeee0\u003c/code\u003e\u003c/a\u003e Re-enabled coverage reporting on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6b890dc869f54b6237caff52a74e86382c076ad2\"\u003e\u003ccode\u003e6b890dc\u003c/code\u003e\u003c/a\u003e Reworded a changelog entry and added PR links to others\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/944257d2d59e8057dd00cd5cc96d8f73028031dd\"\u003e\u003ccode\u003e944257d\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/087975f44599471a84bea2077731143a346c276a\"\u003e\u003ccode\u003e087975f\u003c/code\u003e\u003c/a\u003e Fixed a documentation style (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.11.0\"\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 `redis` from 6.2.0 to 6.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.4.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded epsilon property to the vsim command (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3723\"\u003e#3723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdating the latest Redis image for github pipeline testing (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3726\"\u003e#3726\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003c/h2\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/htemelski-redis\"\u003e\u003ccode\u003e@​htemelski-redis\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/elena-kolevska\"\u003e\u003ccode\u003e@​elena-kolevska\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.3.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for new BITOP operations: DIFF, DIFF1, ANDOR, ONE (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3690\"\u003e#3690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport new VAMANA vector index type (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3702\"\u003e#3702\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new stream commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3711\"\u003e#3711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd async Retry \u003cstrong\u003eeq\u003c/strong\u003e and \u003cstrong\u003ehash\u003c/strong\u003e \u0026amp; fix ExponentialWithJitterBackoff \u003cstrong\u003eeq\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3668\"\u003e#3668\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixing sentinel command execution to allow returning of actual responses when meaningful - behaviour controlled by 'return_responses' argument. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3191\"\u003e#3191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAnnotate deprecated_args decorator to preserve wrapped function type signature (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3701\"\u003e#3701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix ConnectionPool to raise MaxConnectionsError instead of Connection… (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3698\"\u003e#3698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd async Retry \u003cstrong\u003eeq\u003c/strong\u003e and \u003cstrong\u003ehash\u003c/strong\u003e \u0026amp; fix ExponentialWithJitterBackoff \u003cstrong\u003eeq\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3668\"\u003e#3668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSentinelManagedConnection searches for new master upon connection failure (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3560\"\u003e#3560\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3601\"\u003e#3601\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: avoid instantiating a connection on \u003cem\u003erepr\u003c/em\u003e_ (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3653\"\u003e#3653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing the return type hint for the transaction method in the standalone client. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3660\"\u003e#3660\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump rojopolis/spellcheck-github-actions from 0.48.0 to 0.49.0 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3665\"\u003e#3665\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropping integration tests with Redis 6.2 from pipeline actions. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3659\"\u003e#3659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove deprecated arg from call to ClusterPipeline (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3670\"\u003e#3670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTransactionStrategy reset: UNWATCH only when status is watching (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3671\"\u003e#3671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKeyT for set operations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3190\"\u003e#3190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoving references to old docs site '\u003ca href=\"https://redis-py.readthedocs.io/\"\u003ehttps://redis-py.readthedocs.io/\u003c/a\u003e' replaced by '\u003ca href=\"https://redis.readthedocs.io/\"\u003ehttps://redis.readthedocs.io/\u003c/a\u003e' (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3674\"\u003e#3674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoving unnecessary check for tests using AsyncMock (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3432\"\u003e#3432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdating test images for github pipeline execution (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3678\"\u003e#3678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdating the latest Redis image for pipeline testing (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3695\"\u003e#3695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump rojopolis/spellcheck-github-actions from 0.49.0 to 0.51.0 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3689\"\u003e#3689\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDOC-5225 testable probabilistic dt examples (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3691\"\u003e#3691\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate README.md (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3699\"\u003e#3699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConvert the value to int type only if it exists in CLIENT INFO (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3688\"\u003e#3688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix compatibility with latest pytest-asyncio version(1.1.0) (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3708\"\u003e#3708\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDOC-5424 time series examples (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3705\"\u003e#3705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding information in connection pool class doc string for available SSLConnection class, that can be used for SSL connections (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3710\"\u003e#3710\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/redis/redis-py/commit/fff669daaf43ae8092ea8ab7a2a3196a9b1b7e41\"\u003e\u003ccode\u003efff669d\u003c/code\u003e\u003c/a\u003e Updated package version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/43ce2a4025c020bd26e401371c16ca4920b470a5\"\u003e\u003ccode\u003e43ce2a4\u003c/code\u003e\u003c/a\u003e Updating the latest Redis image for github pipeline testing (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3726\"\u003e#3726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/64426cbdd43153b70b0e29d9d7b3ab2c63760359\"\u003e\u003ccode\u003e64426cb\u003c/code\u003e\u003c/a\u003e Added epsilon property to the vsim command (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3723\"\u003e#3723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/67ab74d705b4c1d00d600c500596af7a68abfd56\"\u003e\u003ccode\u003e67ab74d\u003c/code\u003e\u003c/a\u003e Add new stream commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3711\"\u003e#3711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/4c9512b1fe592dc9becebe9e5f053b0184b47f2c\"\u003e\u003ccode\u003e4c9512b\u003c/code\u003e\u003c/a\u003e Adding information in connection pool class doc string for available SSLConne...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/31399ed43588840bbbfdbbf0e8260d1b989b49ce\"\u003e\u003ccode\u003e31399ed\u003c/code\u003e\u003c/a\u003e SentinelManagedConnection searches for new master upon connection failure (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3\"\u003e#3\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/7291deb5eb8054a0dc915a8bf499a17498bc5968\"\u003e\u003ccode\u003e7291deb\u003c/code\u003e\u003c/a\u003e add async Retry \u003ccode\u003e__eq__\u003c/code\u003e and \u003ccode\u003e__hash__\u003c/code\u003e \u0026amp; fix ExponentialWithJitterBackof...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/4cf094fdd2c1f2ce335e671af3fad7ad0a48f309\"\u003e\u003ccode\u003e4cf094f\u003c/code\u003e\u003c/a\u003e Fix ConnectionPool to raise MaxConnectionsError instead of Connection… (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3698\"\u003e#3698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/a00141618572764821bbe6bd74e025536e061587\"\u003e\u003ccode\u003ea001416\u003c/code\u003e\u003c/a\u003e DOC-5424 time series examples (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3705\"\u003e#3705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/2b1ff5363715c8ba0043314a8b4bcbbc1ba741f5\"\u003e\u003ccode\u003e2b1ff53\u003c/code\u003e\u003c/a\u003e Fix compatibility with latest pytest-asyncio version(1.1.0) (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3708\"\u003e#3708\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v6.2.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 `coverage` from 7.10.1 to 7.10.7\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.10.7 — 2025-09-21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ePerformance: with branch coverage in large files, generating HTML, JSON, or\nLCOV reports could take far too long due to some quadratic behavior when\ncreating the function and class index pages.  This is now fixed, closing\n\u003ccode\u003eissue 2048\u003c/code\u003e_.  Thanks to Daniel Diniz for help diagnosing the problem.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMost warnings and a few errors now have links to a page in the docs\nexplaining the specific message.  Closes \u003ccode\u003eissue 1921\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1921: \u003ca href=\"https://redirect.github.com/nedbat/coveragepy/issues/1921\"\u003enedbat/coveragepy#1921\u003c/a\u003e\n.. _issue 2048: \u003ca href=\"https://redirect.github.com/nedbat/coveragepy/issues/2048\"\u003enedbat/coveragepy#2048\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-10-6:\u003c/p\u003e\n\u003ch2\u003eVersion 7.10.6 — 2025-08-29\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003esource\u003c/code\u003e directories were not properly communicated to subprocesses\nthat ran in different directories, as reported in \u003ccode\u003eissue 1499\u003c/code\u003e_.  This is now\nfixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerformance: \u003ccode\u003eAlex Gaynor continues fine-tuning \u0026lt;pull 2038_\u0026gt;\u003c/code\u003e_ the speed of\ncombination, especially with many contexts.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1499: \u003ca href=\"https://redirect.github.com/nedbat/coveragepy/issues/1499\"\u003enedbat/coveragepy#1499\u003c/a\u003e\n.. _pull 2038: \u003ca href=\"https://redirect.github.com/nedbat/coveragepy/pull/2038\"\u003enedbat/coveragepy#2038\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-10-5:\u003c/p\u003e\n\u003ch2\u003eVersion 7.10.5 — 2025-08-23\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBig speed improvements for \u003ccode\u003ecoverage combine\u003c/code\u003e: it's now about twice as\nfast! Huge thanks to Alex Gaynor for pull requests \u003ccode\u003e2032 \u0026lt;pull 2032_\u0026gt;\u003c/code\u003e\u003cem\u003e,\n\u003ccode\u003e2033 \u0026lt;pull 2033_\u0026gt;\u003c/code\u003e\u003c/em\u003e, and \u003ccode\u003e2034 \u0026lt;pull 2034_\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2032: \u003ca href=\"https://redirect.github.com/nedbat/coveragepy/pull/2032\"\u003enedbat/coveragepy#2032\u003c/a\u003e\n.. _pull 2033: \u003ca href=\"https://redirect.github.com/nedbat/coveragepy/pull/2033\"\u003enedbat/coveragepy#2033\u003c/a\u003e\n.. _pull 2034: \u003ca href=\"https://redirect.github.com/nedbat/coveragepy/pull/2034\"\u003enedbat/coveragepy#2034\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-10-4:\u003c/p\u003e\n\u003ch2\u003eVersion 7.10.4 — 2025-08-16\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/nedbat/coveragepy/commit/92a2af54e6bc948a9c536bd9b12bab70fb055904\"\u003e\u003ccode\u003e92a2af5\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.10.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nedbat/coveragepy/commit/952afdaca658d5e1acdd533c727448a0b218caf0\"\u003e\u003ccode\u003e952afda\u003c/code\u003e\u003c/a\u003e docs: prep for 7.10.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nedbat/coveragepy/commit/a301761e69da97b27662f395974d26f78fa8b2b5\"\u003e\u003ccode\u003ea301761\u003c/code\u003e\u003c/a\u003e build: riscv64 wheels (\u003ca href=\"https://redirect.github.com/nedbat/coveragepy/issues/2055\"\u003e#2055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nedbat/coveragepy/commit/5daff8d38786aa540ff9bec622eb3389f117f911\"\u003e\u003ccode\u003e5daff8d\u003c/code\u003e\u003c/a\u003e docs: now source is formatted with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nedbat/coveragepy/commit/04bbc3acfd914fdd99ffec9873bc03bdc7329357\"\u003e\u003ccode\u003e04bbc3a\u003c/code\u003e\u003c/a\u003e docs: discuss cog in the contributing docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nedbat/coveragepy/commit/c181b9315f59a81667da47cf3d760d0253872238\"\u003e\u003ccode\u003ec181b93\u003c/code\u003e\u003c/a\u003e build: use cog --check-fail-msg to instruct devs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nedbat/coveragepy/commit/33c4ba196f49e0ee86ab0ff473c0876c0bacd5fa\"\u003e\u003ccode\u003e33c4ba1\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nedbat/coveragepy/commit/0744b73b6b503ccf2cb75aba095c023672b921a8\"\u003e\u003ccode\u003e0744b73\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group across 1 directory with 2 updates (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nedbat/coveragepy/commit/0d5a112fc54c1d5a07f3f2ec451779808902c9af\"\u003e\u003ccode\u003e0d5a112\u003c/code\u003e\u003c/a\u003e perf: bulk narrowing to avoid N**2. \u003ca href=\"https://redirect.github.com/nedbat/coveragepy/issues/2048\"\u003e#2048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nedbat/coveragepy/commit/a868ed9269ca474748130f5c6360cd2aae66ffc8\"\u003e\u003ccode\u003ea868ed9\u003c/code\u003e\u003c/a\u003e docs: mention Python Discord on the index page\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nedbat/coveragepy/compare/7.10.1...7.10.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hatch` from 1.14.1 to 1.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/hatch/releases\"\u003ehatch's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHatch v1.14.2\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eFixed:\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix compatibility with recent versions of Click\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/d3448c233840d25df0a0a10571e034462cbd5d9e\"\u003e\u003ccode\u003ed3448c2\u003c/code\u003e\u003c/a\u003e Fix Windows build runner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/0170484878e73ba48515d802b44046dccb72f268\"\u003e\u003ccode\u003e0170484\u003c/code\u003e\u003c/a\u003e release Hatch v1.14.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/93e55cee4e294fb380e27739560693b4b4cd15e7\"\u003e\u003ccode\u003e93e55ce\u003c/code\u003e\u003c/a\u003e Fix: Set default of None for \u003ca href=\"https://github.com/click\"\u003e\u003ccode\u003e@​click\u003c/code\u003e\u003c/a\u003e.option(\u0026quot;--filter\u0026quot;, ...) (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2053\"\u003e#2053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pypa/hatch/compare/hatch-v1.14.1...hatch-v1.14.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-material` from 9.6.16 to 9.6.21\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/squidfunk/mkdocs-material/releases\"\u003emkdocs-material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003emkdocs-material-9.6.21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Serbian translations\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8458\"\u003e#8458\u003c/a\u003e: Temporary pin of click dependency\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.6.20\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8446\"\u003e#8446\u003c/a\u003e: Deprecation warning as of Python 3.14 in Emoji extension\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8440\"\u003e#8440\u003c/a\u003e: \u003ccode\u003e\u0026amp;\u003c/code\u003e character not escaped in search highlighting\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8439\"\u003e#8439\u003c/a\u003e: FontAwesome icons color not set in social cards (regression)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.6.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14\u003c/li\u003e\n\u003cli\u003eUpdated Bahasa Malaysia translations\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.6.18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Azerbaijani translations\u003c/li\u003e\n\u003cli\u003eFixed last compat issues with \u003ca href=\"https://github.com/mitsuhiko/minijinja\"\u003eminijinja\u003c/a\u003e, now 100% compatible\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.6.17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8396\"\u003e#8396\u003c/a\u003e: Videos do not autoplay when inside a content tab\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8394\"\u003e#8394\u003c/a\u003e: Stroke width not effective in Mermaid.js diagrams\u003c/li\u003e\n\u003cli\u003eFixed disappearing version selector when hiding page title\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/squidfunk/mkdocs-material/blob/master/CHANGELOG\"\u003emkdocs-material's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003emkdocs-material-9.6.21 (2025-09-30)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Serbian translations\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8458\"\u003e#8458\u003c/a\u003e: Temporary pin of click dependency\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.6.20 (2025-09-15)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8446\"\u003e#8446\u003c/a\u003e: Deprecation warning as of Python 3.14 in Emoji extension\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8440\"\u003e#8440\u003c/a\u003e: \u003ccode\u003e\u0026amp;\u003c/code\u003e character not escaped in search highlighting\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8439\"\u003e#8439\u003c/a\u003e: FontAwesome icons color not set in social cards (regression)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.6.19 (2025-09-07)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14\u003c/li\u003e\n\u003cli\u003eUpdated Bahasa Malaysia translations\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.6.18 (2025-08-22)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Azerbaijani translations\u003c/li\u003e\n\u003cli\u003eFixed last compat issues with [minijinja], now 100% compatible\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.6.17 (2025-08-15)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8396\"\u003e#8396\u003c/a\u003e: Videos do not autoplay when inside a content tab\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8394\"\u003e#8394\u003c/a\u003e: Stroke width not effective in Mermaid.js diagrams\u003c/li\u003e\n\u003cli\u003eFixed disappearing version selector when hiding page title\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.6.16 (2025-07-26)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8349\"\u003e#8349\u003c/a\u003e: Info plugin doesn't correctly detect virtualenv in some cases\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8334\"\u003e#8334\u003c/a\u003e: Find-in-page detects matches in hidden search result list\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.6.15 (2025-07-01)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Mongolian translations\u003c/li\u003e\n\u003cli\u003eImproved semantic markup of \u0026quot;edit this page\u0026quot; button\u003c/li\u003e\n\u003cli\u003eImproved info plugin virtual environment resolution\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8291\"\u003e#8291\u003c/a\u003e: Large font size setting throws of breakpoints in JavaScript\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.6.14 (2025-05-13)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8215\"\u003e#8215\u003c/a\u003e: Social plugin crashes when CairoSVG is updated to 2.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.6.13 (2025-05-10)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8204\"\u003e#8204\u003c/a\u003e: Annotations showing list markers in print view\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8153\"\u003e#8153\u003c/a\u003e: Improve style of cardinality symbols in Mermaid.js ER diagrams\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.6.12 (2025-04-17)\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/squidfunk/mkdocs-material/commit/f7cacc0089c01e6c075512da06de949e769dad0e\"\u003e\u003ccode\u003ef7cacc0\u003c/code\u003e\u003c/a\u003e Prepare 9.6.21 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/6f715fbe063869d6fda139c0b9f06e371517d106\"\u003e\u003ccode\u003e6f715fb\u003c/code\u003e\u003c/a\u003e Unpinned click\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/97e275c953e5b8255ca24ca166ddd802e23d84b1\"\u003e\u003ccode\u003e97e275c\u003c/code\u003e\u003c/a\u003e Updated Serbian languages (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8445\"\u003e#8445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/f0b0b5931a386b670c19d3e3b78ecd41da144341\"\u003e\u003ccode\u003ef0b0b59\u003c/code\u003e\u003c/a\u003e Prepare 9.6.20 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/900981b6f82c51fdf4e78f1e5f9e48592bbb85c2\"\u003e\u003ccode\u003e900981b\u003c/code\u003e\u003c/a\u003e Fixed deprecation warning as of Python 3.14 in Emoji extension\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/ed0026322f5ff51df2e9c9f8489ba2e3ebc06fa5\"\u003e\u003ccode\u003eed00263\u003c/code\u003e\u003c/a\u003e Documentation (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8443\"\u003e#8443\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/a4f42bbfcdc816f7e69b2ab0c7ed87d58862939e\"\u003e\u003ccode\u003ea4f42bb\u003c/code\u003e\u003c/a\u003e Updated Premium sponsors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/63d7e746be929737d7bbbca32d66f5d083ea253a\"\u003e\u003ccode\u003e63d7e74\u003c/code\u003e\u003c/a\u003e Fixed FontAwesome icons having fill attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/ee678455e93a2a356d58bc7a1c57f1e3e171a8c4\"\u003e\u003ccode\u003eee67845\u003c/code\u003e\u003c/a\u003e Fixed \u0026amp; not escaped in search highlighting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/2fe55eecfa0abe6004ea0adb8b5fbc527d788d5f\"\u003e\u003ccode\u003e2fe55ee\u003c/code\u003e\u003c/a\u003e Prepare 9.6.19 release\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/squidfunk/mkdocs-material/compare/9.6.16...9.6.21\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.17.1 to 1.18.2\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 1.18.2\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash on recursive alias (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/19845\"\u003e19845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd additional guidance for stubtest errors when runtime is \u003ccode\u003eobject.__init__\u003c/code\u003e (Stephen Morton, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/19733\"\u003e19733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix handling of None values in f-string expressions in mypyc (BobTheBuidler, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/19846\"\u003e19846\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\u003eAli Hamdan\u003c/li\u003e\n\u003cli\u003eAnthony Sottile\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003eBrian Schubert\u003c/li\u003e\n\u003cli\u003eChainfire\u003c/li\u003e\n\u003cli\u003eCharlie Denton\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eCoolCat467\u003c/li\u003e\n\u003cli\u003eDaniel Hnyk\u003c/li\u003e\n\u003cli\u003eEmily\u003c/li\u003e\n\u003cli\u003eEmma Smith\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJahongir Qurbonov\u003c/li\u003e\n\u003cli\u003eJelle Zijlstra\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eOmer Hadari\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003ePrinceNaroliya\u003c/li\u003e\n\u003cli\u003eRandolf Scholz\u003c/li\u003e\n\u003cli\u003eRobsdedude\u003c/li\u003e\n\u003cli\u003eSaul Shanabrook\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eStanislav Terliakov\u003c/li\u003e\n\u003cli\u003eStephen Morton\u003c/li\u003e\n\u003cli\u003ewyattscarpenter\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 1.17\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.17 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 and bug fixes.\nYou 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\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/df05f05555ee62dbdb9960c64cad186172e92be1\"\u003e\u003ccode\u003edf05f05\u003c/code\u003e\u003c/a\u003e remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/01a7a1285d03cb7a330359b22cb462aacb5f9720\"\u003e\u003ccode\u003e01a7a12\u003c/code\u003e\u003c/a\u003e Update changelog for 1.18.2 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/19873\"\u003e#19873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/ca5abf09f3bfc543ac9c18a364696bc5da20bc03\"\u003e\u003ccode\u003eca5abf0\u003c/code\u003e\u003c/a\u003e Typeshed cherry-pick: Make type of \u003ccode\u003eunitest.mock.Any\u003c/code\u003e a subclass of \u003ccode\u003eAny\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python/mypy/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/9d794b57d9c5b03d61caa3286756c05e0ae3021b\"\u003e\u003ccode\u003e9d794b5\u003c/code\u003e\u003c/a\u003e [mypyc] fix: inappropriate \u003ccode\u003eNone\u003c/code\u003es in f-strings (\u003ca href=\"https://redirect.github.com/python/mypy/issues/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2c0510c84868b6bb42ef0f305b701e530a85c25f\"\u003e\u003ccode\u003e2c0510c\u003c/code\u003e\u003c/a\u003e stubtest: additional guidance on errors when runtime is object.\u003cstrong\u003einit\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/python/mypy/issues/19733\"\u003e#19733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2f3f03c3e39e68dbfa3544c01a34f99803b3e1c2\"\u003e\u003ccode\u003e2f3f03c\u003c/code\u003e\u003c/a\u003e Bump version to 1.18.2+dev for point release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/76698412bc1f3ca99000d52649acd5a0e06aa71d\"\u003e\u003ccode\u003e7669841\u003c/code\u003e\u003c/a\u003e Fix crash on recursive alias in indirection.py (\u003ca href=\"https://redirect.github.com/python/mypy/issues/19845\"\u003e#19845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/03fbaa941bccc3a9f8aea796d586603b67119bf2\"\u003e\u003ccode\u003e03fbaa9\u003c/code\u003e\u003c/a\u003e bump version to 1.18.1 due to wheels failure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b44a1fbf0cf9fd90fd29d6bcd9f64c55dd2fd4c8\"\u003e\u003ccode\u003eb44a1fb\u003c/code\u003e\u003c/a\u003e removed +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7197a99d1aebb1b7a584f82a53c44efb7dddf136\"\u003e\u003ccode\u003e7197a99\u003c/code\u003e\u003c/a\u003e Removed Unreleased in the Changelog for Release 1.18 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/19827\"\u003e#19827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.17.1...v1.18.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 8.4.1 to 8.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.4.2\u003c/h2\u003e\n\u003ch1\u003epytest 8.4.2 (2025-09-03)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13478\"\u003e#13478\u003c/a\u003e: Fixed a crash when using \u003ccode\u003econsole_output_style\u003c/code\u003e{.interpreted-text role=\u0026quot;confval\u0026quot;} with \u003ccode\u003etimes\u003c/code\u003e and a module is skipped.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13530\"\u003e#13530\u003c/a\u003e: Fixed a crash when using \u003ccode\u003epytest.approx\u003c/code\u003e{.interpreted-text role=\u0026quot;func\u0026quot;} and \u003ccode\u003edecimal.Decimal\u003c/code\u003e{.interpreted-text role=\u0026quot;class\u0026quot;} instances with the \u003ccode\u003edecimal.FloatOperation\u003c/code\u003e{.interpreted-text role=\u0026quot;class\u0026quot;} trap set.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13549\"\u003e#13549\u003c/a\u003e: No longer evaluate type annotations in Python \u003ccode\u003e3.14\u003c/code\u003e when inspecting function signatures.\u003c/p\u003e\n\u003cp\u003eThis prevents crashes during module collection when modules do not explicitly use \u003ccode\u003efrom __future__ import annotations\u003c/code\u003e and import types for annotations within a \u003ccode\u003eif TYPE_CHECKING:\u003c/code\u003e block.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13559\"\u003e#13559\u003c/a\u003e: Added missing [int]{.title-ref} and [float]{.title-ref} variants to the [Literal]{.title-ref} type annotation of the [type]{.title-ref} parameter in \u003ccode\u003epytest.Parser.addini\u003c/code\u003e{.interpreted-text role=\u0026quot;meth\u0026quot;}.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13563\"\u003e#13563\u003c/a\u003e: \u003ccode\u003epytest.approx\u003c/code\u003e{.interpreted-text role=\u0026quot;func\u0026quot;} now only imports \u003ccode\u003enumpy\u003c/code\u003e if NumPy is already in \u003ccode\u003esys.modules\u003c/code\u003e. This fixes unconditional import behavior introduced in [8.4.0]{.title-ref}.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13577\"\u003e#13577\u003c/a\u003e: Clarify that \u003ccode\u003epytest_generate_tests\u003c/code\u003e is discovered in test modules/classes; other hooks must be in \u003ccode\u003econftest.py\u003c/code\u003e or plugins.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13480\"\u003e#13480\u003c/a\u003e: Self-testing: fixed a few test failures when run with \u003ccode\u003e-Wdefault\u003c/code\u003e or a similar override.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13547\"\u003e#13547\u003c/a\u003e: Self-testing: corrected expected message for \u003ccode\u003etest_doctest_unexpected_exception\u003c/code\u003e in Python \u003ccode\u003e3.14\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13684\"\u003e#13684\u003c/a\u003e: Make pytest's own testsuite insensitive to the presence of the \u003ccode\u003eCI\u003c/code\u003e environment variable -- by \u003ccode\u003eogrisel\u003c/code\u003e{.interpreted-text role=\u0026quot;user\u0026quot;}.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bfae4224fd554d3d7f2c277a4cc092b6ec6af3ae\"\u003e\u003ccode\u003ebfae422\u003c/code\u003e\u003c/a\u003e Prepare release version 8.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/89905381a163be30ae87d62e5f750e902d750c5f\"\u003e\u003ccode\u003e8990538\u003c/code\u003e\u003c/a\u003e Fix passenv CI in tox ini and make tests insensitive to the presence of the C...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ca676bfe005aebcb12f4146d1b0f1d2772e2cd5d\"\u003e\u003ccode\u003eca676bf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13687\"\u003e#13687\u003c/a\u003e from pytest-dev/patchback/backports/8.4.x/e63f6e51c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/975a60a63ce385a44655596e254c1899feaa53e4\"\u003e\u003ccode\u003e975a60a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13686\"\u003e#13686\u003c/a\u003e from pytest-dev/patchback/backports/8.4.x/12bde8af6...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7723ce84b87ab08f86ddafcb342acc28ba5ec99d\"\u003e\u003ccode\u003e7723ce8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13683\"\u003e#13683\u003c/a\u003e from even-even/fix_Exeption_to_Exception_in_errorMe...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b7f05680d1301e0969b30bcb3c4b27433c9ee2b7\"\u003e\u003ccode\u003eb7f0568\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13685\"\u003e#13685\u003c/a\u003e from CoretexShadow/fix/docs-pytest-generate-tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/2c94c4a6948ba53440818389298157fa5d5f94cd\"\u003e\u003ccode\u003e2c94c4a\u003c/code\u003e\u003c/a\u003e add missing colon (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13640\"\u003e#13640\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13641\"\u003e#13641\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c3d7684bc01c8c48d05145a30c5211ca8656c68c\"\u003e\u003ccode\u003ec3d7684\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13606\"\u003e#13606\u003c/a\u003e from pytest-dev/patchback/backports/8.4.x/5f9938563...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/dc6e3be2ddc75a149b6d102d9b7c82ee47a00cfa\"\u003e\u003ccode\u003edc6e3be\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13605\"\u003e#13605\u003c/a\u003e from The-Compiler/training-update-2025-07\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f87289c36c8dbe7740e3020f5546b6f8b0861ff0\"\u003e\u003ccode\u003ef87289c\u003c/code\u003e\u003c/a\u003e Fix crash with \u003ccode\u003etimes\u003c/code\u003e output style and skipped module (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13573\"\u003e#13573\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13579\"\u003e#13579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.4.1...8.4.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.12.7 to 0.13.2\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.13.2\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2025-09-25.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Implement \u003ccode\u003eblocking-path-method\u003c/code\u003e (\u003ccode\u003eASYNC240\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20264\"\u003e#20264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Implement \u003ccode\u003emap-without-explicit-strict\u003c/code\u003e (\u003ccode\u003eB912\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20429\"\u003e#20429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bultins\u003c/code\u003e] Detect class-scope builtin shadowing in decorators, default args, and attribute initializers (\u003ccode\u003eA003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20178\"\u003e#20178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Implement \u003ccode\u003elogging-eager-conversion\u003c/code\u003e (\u003ccode\u003eRUF065\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19942\"\u003e#19942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003e.pyw\u003c/code\u003e files by default when linting and formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20458\"\u003e#20458\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeduplicate input paths (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20105\"\u003e#20105\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Preserve trailing commas for single-element lists (\u003ccode\u003eC409\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19571\"\u003e#19571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Avoid syntax error from conflict with \u003ccode\u003ePIE790\u003c/code\u003e (\u003ccode\u003ePYI021\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20010\"\u003e#20010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Correct fix for positive \u003ccode\u003emaxsplit\u003c/code\u003e without separator (\u003ccode\u003eSIM905\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20056\"\u003e#20056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix \u003ccode\u003eUP008\u003c/code\u003e not to apply when \u003ccode\u003e__class__\u003c/code\u003e is a local variable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20497\"\u003e#20497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Fix \u003ccode\u003eB004\u003c/code\u003e to skip invalid \u003ccode\u003ehasattr\u003c/code\u003e/\u003ccode\u003egetattr\u003c/code\u003e calls (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20486\"\u003e#20486\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Replace \u003ccode\u003e-nan\u003c/code\u003e with \u003ccode\u003enan\u003c/code\u003e when using the value to construct a \u003ccode\u003eDecimal\u003c/code\u003e (\u003ccode\u003eFURB164\u003c/code\u003e ) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20391\"\u003e#20391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd 'Finding ways to help' to CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20567\"\u003e#20567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate import path to \u003ccode\u003eruff-wasm-web\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20539\"\u003e#20539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Clarify the supported hashing functions (\u003ccode\u003eS324\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20534\"\u003e#20534\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eplayground\u003c/code\u003e] Allow hover quick fixes to appear for overlapping diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20527\"\u003e#20527\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eplayground\u003c/code\u003e] Fix non‑BMP code point handling in quick fixes and markers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20526\"\u003e#20526\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/BurntSushi\"\u003e\u003ccode\u003e@​BurntSushi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mtshiba\"\u003e\u003ccode\u003e@​mtshiba\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/second-ed\"\u003e\u003ccode\u003e@​second-ed\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danparizher\"\u003e\u003ccode\u003e@​danparizher\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShikChen\"\u003e\u003ccode\u003e@​ShikChen\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PieterCK\"\u003e\u003ccode\u003e@​PieterCK\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GDYendell\"\u003e\u003ccode\u003e@​GDYendell\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RazerM\"\u003e\u003ccode\u003e@​RazerM\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/TaKO8Ki\"\u003e\u003ccode\u003e@​TaKO8Ki\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\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/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.13.2\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.13.2\u003c/h2\u003e\n\u003cp\u003eReleased on 2025-09-25.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Implement \u003ccode\u003eblocking-path-method\u003c/code\u003e (\u003ccode\u003eASYNC240\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20264\"\u003e#20264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Implement \u003ccode\u003emap-without-explicit-strict\u003c/code\u003e (\u003ccode\u003eB912\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20429\"\u003e#20429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bultins\u003c/code\u003e] Detect class-scope builtin shadowing in decorators, default args, and attribute initializers (\u003ccode\u003eA003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20178\"\u003e#20178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Implement \u003ccode\u003elogging-eager-conversion\u003c/code\u003e (\u003ccode\u003eRUF065\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19942\"\u003e#19942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003e.pyw\u003c/code\u003e files by default when linting and formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20458\"\u003e#20458\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeduplicate input paths (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20105\"\u003e#20105\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Preserve trailing commas for single-element lists (\u003ccode\u003eC409\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19571\"\u003e#19571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Avoid syntax error from conflict with \u003ccode\u003ePIE790\u003c/code\u003e (\u003ccode\u003ePYI021\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20010\"\u003e#20010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Correct fix for positive \u003ccode\u003emaxsplit\u003c/code\u003e without separator (\u003ccode\u003eSIM905\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20056\"\u003e#20056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix \u003ccode\u003eUP008\u003c/code\u003e not to apply when \u003ccode\u003e__class__\u003c/code\u003e is a local variable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20497\"\u003e#20497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Fix \u003ccode\u003eB004\u003c/code\u003e to skip invalid \u003ccode\u003ehasattr\u003c/code\u003e/\u003ccode\u003egetattr\u003c/code\u003e calls (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20486\"\u003e#20486\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Replace \u003ccode\u003e-nan\u003c/code\u003e with \u003ccode\u003enan\u003c/code\u003e when using the value to construct a \u003ccode\u003eDecimal\u003c/code\u003e (\u003ccode\u003eFURB164\u003c/code\u003e ) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20391\"\u003e#20391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd 'Finding ways to help' to CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20567\"\u003e#20567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate import path to \u003ccode\u003eruff-wasm-web\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20539\"\u003e#20539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Clarify the supported hashing functions (\u003ccode\u003eS324\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20534\"\u003e#20534\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eplayground\u003c/code\u003e] Allow hover quick fixes to appear for overlapping diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20527\"\u003e#20527\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eplayground\u003c/code\u003e] Fix non‑BMP code point handling in quick fixes and markers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20526\"\u003e#20526\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/BurntSushi\"\u003e\u003ccode\u003e@​BurntSushi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mtshiba\"\u003e\u003ccode\u003e@​mtshiba\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/second-ed\"\u003e\u003ccode\u003e@​second-ed\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danparizher\"\u003e\u003ccode\u003e@​danparizher\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShikChen\"\u003e\u003ccode\u003e@​ShikChen\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PieterCK\"\u003e\u003ccode\u003e@​PieterCK\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GDYendell\"\u003e\u003ccode\u003e@​GDYendell\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RazerM\"\u003e\u003ccode\u003e@​RazerM\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/TaKO8Ki\"\u003e\u003ccode\u003e@​TaKO8Ki\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\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/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.13.1\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/astral-sh/ruff/commit/b0bdf0334e38417f8617057cd0392a4b53954120\"\u003e\u003ccode\u003eb0bdf03\u003c/code\u003e\u003c/a\u003e Bump 0.13.2 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20576\"\u003e#20576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7331d393c555ece88aa69f685562163790ddf611\"\u003e\u003ccode\u003e7331d39\u003c/code\u003e\u003c/a\u003e Update rooster to 0.1.0 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20575\"\u003e#20575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/529e5fa6c24ea68501adb18245eab27c701598d2\"\u003e\u003ccode\u003e529e5fa\u003c/code\u003e\u003c/a\u003e [ty] Ecosystem analyzer: timing report (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20571\"\u003e#20571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/efbb80f7475c63b62981444d5c429109ff12ad32\"\u003e\u003ccode\u003eefbb80f\u003c/code\u003e\u003c/a\u003e [ty] Remove hack in protocol satisfiability check (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20568\"\u003e#20568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9f3cffc65cb834661e17263245761a66f9474af0\"\u003e\u003ccode\u003e9f3cffc\u003c/code\u003e\u003c/a\u003e Add 'Finding ways to help' to CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20567\"\u003e#20567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/21be94ac33f445d8a681babec6c56ca3d1b67156\"\u003e\u003ccode\u003e21be94a\u003c/code\u003e\u003c/a\u003e [ty] Explicitly test assignability/subtyping between unions of nominal types ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b7d5dc98c193cc5cab00d557b6a392d35137d990\"\u003e\u003ccode\u003eb7d5dc9\u003c/code\u003e\u003c/a\u003e [ty] Add tests for interactions of \u003ccode\u003e@classmethod\u003c/code\u003e, \u003ccode\u003e@staticmethod\u003c/code\u003e, and proto...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e1bb74b25a0f730a5baff263d753ffe03cf857b1\"\u003e\u003ccode\u003ee1bb74b\u003c/code\u003e\u003c/a\u003e [ty] Match variadic argument to variadic parameter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20511\"\u003e#20511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/edeb45804ef9dbe348d393f3ab77288062a3c77e\"\u003e\u003ccode\u003eedeb458\u003c/code\u003e\u003c/a\u003e [ty] fallback to resolve_real_module in file_to_module (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20461\"\u003e#20461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bea92c822980b1575d58542dffa2c960393d7603\"\u003e\u003ccode\u003ebea92c8\u003c/code\u003e\u003c/a\u003e [ty] More precise type inference for dictionary literals (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20523\"\u003e#20523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.12.7...0.13.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `trio` 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/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003ebool(trio.Event)\u003c/code\u003e and have it raise a \u003ccode\u003eDeprecationWarning\u003c/code\u003e and tell users to use \u003ccode\u003etrio.Event.is_set\u003c/code\u003e instead. This is an alternative to \u003ccode\u003emypy --enable-error-code=truthy-bool\u003c/code\u003e for users who don't use type checking. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3322\"\u003epython-trio/trio#3322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen misnesting nurseries you now get a helpful \u003ccode\u003eRuntimeError\u003c/code\u003e instead of a catastrophic \u003ccode\u003eTrioInternalError\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3307\"\u003epython-trio/trio#3307\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/python-trio/trio/commit/94b7244505212061e21507c84725ef28be2705dd\"\u003e\u003ccode\u003e94b7244\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/439de50f5e3c9a718a2b4ed5790f27198de33e13\"\u003e\u003ccode\u003e439de50\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/cc148cfc0f23934aa603012b4f152c990e375f62\"\u003e\u003ccode\u003ecc148cf\u003c/code\u003e\u003c/a\u003e Suppress GeneratorExit from \u003ccode\u003e.aclose()\u003c/code\u003e for \u003ccode\u003eas_safe_channel\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3325\"\u003e#3325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/fc352b2b8ee84071273142375d8babb44333d115\"\u003e\u003ccode\u003efc352b2\u003c/code\u003e\u003c/a\u003e check for nursery misnesting on task exit (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/5bfba27b23f9a1f1bac86880b341bcfab54e43f2\"\u003e\u003ccode\u003e5bfba27\u003c/code\u003e\u003c/a\u003e Improve REPL KI (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3030\"\u003e#3030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/7cc7f6b9249f654627fb6b6737115a0900704c19\"\u003e\u003ccode\u003e7cc7f6b\u003c/code\u003e\u003c/a\u003e Define \u003ccode\u003etrio.Event.__bool__()\u003c/code\u003e to reduce bugs (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3322\"\u003e#3322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/8dd7d8ea38346b5effdfcc0669b356380eb670c9\"\u003e\u003ccode\u003e8dd7d8e\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3323\"\u003e#3323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/02c3794913a04a030f1f2ea76fb67b69abd90c3c\"\u003e\u003ccode\u003e02c3794\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003etyping_extensions\u003c/code\u003e requirement\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c3a0a762c343e5e4876725da18714bc79f38314f\"\u003e\u003ccode\u003ec3a0a76\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e,\u003c/code\u003e -\u0026gt; \u003ccode\u003e;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/e34ce248d6d1713a1986d13c93f2f49dda457228\"\u003e\u003ccode\u003ee34ce24\u003c/code\u003e\u003c/a\u003e Add message properly\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/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 `types-boto3` from 1.40.0 to 1.40.42\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/releases\"\u003etypes-boto3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.8.0 - Python 3.8 runtime is back\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e \u003ccode\u003einstall_requires\u003c/code\u003e section is calculated based on dependencies in use, so \u003ccode\u003etyping-extensions\u003c/code\u003e version is set properly\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Replaced \u003ccode\u003etyping\u003c/code\u003e imports with \u003ccode\u003ecollections.abc\u003c/code\u003e with a fallback to \u003ccode\u003etyping\u003c/code\u003e for Python \u0026lt;3.9\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Added aliases for \u003ccode\u003ebuiltins.list\u003c/code\u003e, \u003ccode\u003ebuiltins.set\u003c/code\u003e, \u003ccode\u003ebuiltins.dict\u003c/code\u003e, and \u003ccode\u003ebuiltins.type\u003c/code\u003e, so Python 3.8 runtime should work as expected again (reported by \u003ca href=\"https://github.com/YHallouard\"\u003e\u003ccode\u003e@​YHallouard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/340\"\u003e#340\u003c/a\u003e and \u003ca href=\"https://github.com/Omri-Ben-Yair\"\u003e\u003ccode\u003e@​Omri-Ben-Yair\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Unions use the same type annotations as the rest of the structures due to proper fallbacks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Universal input/output shapes were not replaced properly in service subresources\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[docs]\u003c/code\u003e Simplified doc links rendering for services\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Cleaned up unnecessary imports in \u003ccode\u003eclient.pyi\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[builder]\u003c/code\u003e Import records with fallback are always rendered\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pyyaml` from 6.0.12.20250516 to 6.0.12.20250915\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\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\n_Description has been truncated_","html_url":"https://github.com/karpetrosyan/hishel/pull/380","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/karpetrosyan%2Fhishel/issues/380","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/380/packages"}},{"old_version":"0.30.0","new_version":"0.31.0","update_type":"minor","path":null,"pr_created_at":"2025-09-30T01:04:07.000Z","version_change":"0.30.0 → 0.31.0","issue":{"uuid":"2872537384","node_id":"PR_kwDOO8FTy86rN3Eo","number":32,"state":"open","title":"Bump trio from 0.30.0 to 0.31.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-30T01:04:07.000Z","updated_at":"2025-09-30T01:04:07.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"trio","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/python-trio/trio"}],"path":null,"ecosystem":"pip"},"body":"Bumps [trio](https://github.com/python-trio/trio) 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/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003ebool(trio.Event)\u003c/code\u003e and have it raise a \u003ccode\u003eDeprecationWarning\u003c/code\u003e and tell users to use \u003ccode\u003etrio.Event.is_set\u003c/code\u003e instead. This is an alternative to \u003ccode\u003emypy --enable-error-code=truthy-bool\u003c/code\u003e for users who don't use type checking. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3322\"\u003epython-trio/trio#3322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen misnesting nurseries you now get a helpful \u003ccode\u003eRuntimeError\u003c/code\u003e instead of a catastrophic \u003ccode\u003eTrioInternalError\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3307\"\u003epython-trio/trio#3307\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/python-trio/trio/commit/94b7244505212061e21507c84725ef28be2705dd\"\u003e\u003ccode\u003e94b7244\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/439de50f5e3c9a718a2b4ed5790f27198de33e13\"\u003e\u003ccode\u003e439de50\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/cc148cfc0f23934aa603012b4f152c990e375f62\"\u003e\u003ccode\u003ecc148cf\u003c/code\u003e\u003c/a\u003e Suppress GeneratorExit from \u003ccode\u003e.aclose()\u003c/code\u003e for \u003ccode\u003eas_safe_channel\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3325\"\u003e#3325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/fc352b2b8ee84071273142375d8babb44333d115\"\u003e\u003ccode\u003efc352b2\u003c/code\u003e\u003c/a\u003e check for nursery misnesting on task exit (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/5bfba27b23f9a1f1bac86880b341bcfab54e43f2\"\u003e\u003ccode\u003e5bfba27\u003c/code\u003e\u003c/a\u003e Improve REPL KI (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3030\"\u003e#3030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/7cc7f6b9249f654627fb6b6737115a0900704c19\"\u003e\u003ccode\u003e7cc7f6b\u003c/code\u003e\u003c/a\u003e Define \u003ccode\u003etrio.Event.__bool__()\u003c/code\u003e to reduce bugs (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3322\"\u003e#3322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/8dd7d8ea38346b5effdfcc0669b356380eb670c9\"\u003e\u003ccode\u003e8dd7d8e\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3323\"\u003e#3323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/02c3794913a04a030f1f2ea76fb67b69abd90c3c\"\u003e\u003ccode\u003e02c3794\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003etyping_extensions\u003c/code\u003e requirement\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c3a0a762c343e5e4876725da18714bc79f38314f\"\u003e\u003ccode\u003ec3a0a76\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e,\u003c/code\u003e -\u0026gt; \u003ccode\u003e;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/e34ce248d6d1713a1986d13c93f2f49dda457228\"\u003e\u003ccode\u003ee34ce24\u003c/code\u003e\u003c/a\u003e Add message properly\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trio\u0026package-manager=pip\u0026previous-version=0.30.0\u0026new-version=0.31.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\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/dYoshitakaKato/twitch-to-youtube/pull/32","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/dYoshitakaKato%2Ftwitch-to-youtube/issues/32","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/32/packages"}},{"old_version":"0.30.0","new_version":"0.31.0","update_type":"minor","path":null,"pr_created_at":"2025-09-22T06:45:06.000Z","version_change":"0.30.0 → 0.31.0","issue":{"uuid":"2848128153","node_id":"PR_kwDOAAksi86pwvyZ","number":28,"state":"closed","title":"Bump trio from 0.30.0 to 0.31.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-09-25T10:51:29.000Z","author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-22T06:45:06.000Z","updated_at":"2025-09-25T10:51:30.000Z","time_to_close":273983,"merged_at":"2025-09-25T10:51:29.000Z","merged_by":"aquarion","closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"trio","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/python-trio/trio"}],"path":null,"ecosystem":"pip"},"body":"Bumps [trio](https://github.com/python-trio/trio) 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/python-trio/trio/releases\"\u003etrio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\"\u003ehttps://github.com/python-trio/trio/compare/v0.30.0...v0.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCancelled\u003c/code\u003e strings can now display the source and reason for a cancellation. Trio-internal sources of cancellation will set this string, and \u003ccode\u003eCancelScope.cancel\u003c/code\u003e now has a \u003ccode\u003ereason\u003c/code\u003e string parameter that can be used to attach info to any \u003ccode\u003eCancelled\u003c/code\u003e to help in debugging. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3232\"\u003epython-trio/trio#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake ctrl+c work in more situations in the Trio REPL (\u003ccode\u003epython -m trio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3007\"\u003epython-trio/trio#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pickling \u003ccode\u003etrio.Cancelled\u003c/code\u003e, as they can show up when you want to pickle something else. This does not rule out pickling other \u003ccode\u003eNoPublicConstructor\u003c/code\u003e objects -- create an issue if necessary. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3248\"\u003epython-trio/trio#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecrease import time on Windows by around 10%. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3263\"\u003epython-trio/trio#3263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle unwrapping SystemExit/KeyboardInterrupt exception gracefully in utility function \u003ccode\u003eraise_single_exception_from_group\u003c/code\u003e that reraises last exception from group. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3275\"\u003epython-trio/trio#3275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure that the DTLS server does not mutate SSL context. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3277\"\u003epython-trio/trio#3277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid having \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e raise if closing the generator wrapped\n\u003ccode\u003eGeneratorExit\u003c/code\u003e in a \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3324\"\u003epython-trio/trio#3324\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003ebool(trio.Event)\u003c/code\u003e and have it raise a \u003ccode\u003eDeprecationWarning\u003c/code\u003e and tell users to use \u003ccode\u003etrio.Event.is_set\u003c/code\u003e instead. This is an alternative to \u003ccode\u003emypy --enable-error-code=truthy-bool\u003c/code\u003e for users who don't use type checking. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3322\"\u003epython-trio/trio#3322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous internal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen misnesting nurseries you now get a helpful \u003ccode\u003eRuntimeError\u003c/code\u003e instead of a catastrophic \u003ccode\u003eTrioInternalError\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3307\"\u003epython-trio/trio#3307\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/python-trio/trio/commit/94b7244505212061e21507c84725ef28be2705dd\"\u003e\u003ccode\u003e94b7244\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/439de50f5e3c9a718a2b4ed5790f27198de33e13\"\u003e\u003ccode\u003e439de50\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/cc148cfc0f23934aa603012b4f152c990e375f62\"\u003e\u003ccode\u003ecc148cf\u003c/code\u003e\u003c/a\u003e Suppress GeneratorExit from \u003ccode\u003e.aclose()\u003c/code\u003e for \u003ccode\u003eas_safe_channel\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3325\"\u003e#3325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/fc352b2b8ee84071273142375d8babb44333d115\"\u003e\u003ccode\u003efc352b2\u003c/code\u003e\u003c/a\u003e check for nursery misnesting on task exit (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/5bfba27b23f9a1f1bac86880b341bcfab54e43f2\"\u003e\u003ccode\u003e5bfba27\u003c/code\u003e\u003c/a\u003e Improve REPL KI (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3030\"\u003e#3030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/7cc7f6b9249f654627fb6b6737115a0900704c19\"\u003e\u003ccode\u003e7cc7f6b\u003c/code\u003e\u003c/a\u003e Define \u003ccode\u003etrio.Event.__bool__()\u003c/code\u003e to reduce bugs (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3322\"\u003e#3322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/8dd7d8ea38346b5effdfcc0669b356380eb670c9\"\u003e\u003ccode\u003e8dd7d8e\u003c/code\u003e\u003c/a\u003e Dependency updates (\u003ca href=\"https://redirect.github.com/python-trio/trio/issues/3323\"\u003e#3323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/02c3794913a04a030f1f2ea76fb67b69abd90c3c\"\u003e\u003ccode\u003e02c3794\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003etyping_extensions\u003c/code\u003e requirement\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/c3a0a762c343e5e4876725da18714bc79f38314f\"\u003e\u003ccode\u003ec3a0a76\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e,\u003c/code\u003e -\u0026gt; \u003ccode\u003e;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-trio/trio/commit/e34ce248d6d1713a1986d13c93f2f49dda457228\"\u003e\u003ccode\u003ee34ce24\u003c/code\u003e\u003c/a\u003e Add message properly\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-trio/trio/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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trio\u0026package-manager=pip\u0026previous-version=0.30.0\u0026new-version=0.31.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\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/aquarion/Lifestream/pull/28","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/aquarion%2FLifestream/issues/28","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/28/packages"}}]}