{"id":5054,"name":"websocket-client","ecosystem":"pip","repository_url":"https://github.com/websocket-client/websocket-client","issues_count":85,"created_at":"2025-06-06T17:08:27.507Z","updated_at":"2025-06-06T17:08:27.507Z","purl":"pkg:pypi/websocket-client","metadata":{"id":2969092,"name":"websocket-client","ecosystem":"pypi","description":"WebSocket client for Python with low level API options","homepage":"https://github.com/websocket-client/websocket-client.git","licenses":"Apache-2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/websocket-client/websocket-client","keywords_array":["websockets","client"],"namespace":null,"versions_count":87,"first_release_published_at":"2011-01-04T04:59:48.000Z","latest_release_published_at":"2024-04-23T22:16:14.000Z","latest_release_number":"1.8.0","last_synced_at":"2025-06-06T05:30:38.319Z","created_at":"2022-04-10T13:03:41.050Z","updated_at":"2025-06-06T05:30:38.319Z","registry_url":"https://pypi.org/project/websocket-client/","install_command":"pip install websocket-client --index-url https://pypi.org/simple","documentation_url":"https://websocket-client.readthedocs.io/","metadata":{"funding":null,"documentation":"https://websocket-client.readthedocs.io/","classifiers":["Development Status :: 4 - Beta","Intended Audience :: Developers","License :: OSI Approved :: Apache Software License","Operating System :: MacOS :: MacOS X","Operating System :: Microsoft :: Windows","Operating System :: POSIX","Programming Language :: Python :: 3","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9","Topic :: Internet","Topic :: Software Development :: Libraries :: Python Modules"],"normalized_name":"websocket-client"},"repo_metadata":{"uuid":"1202362","full_name":"websocket-client/websocket-client","owner":"websocket-client","description":"WebSocket client for Python","archived":false,"fork":false,"pushed_at":"2023-12-15T05:56:13.000Z","size":1361,"stargazers_count":3380,"open_issues_count":14,"forks_count":806,"subscribers_count":86,"default_branch":"master","last_synced_at":"2024-01-06T13:57:52.096Z","etag":null,"topics":["python","rfc-6455","websocket","websocket-client","websockets","websockets-client"],"latest_commit_sha":null,"homepage":"https://github.com/websocket-client/websocket-client","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/websocket-client.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2010-12-28T06:35:25.000Z","updated_at":"2024-01-06T13:57:52.097Z","dependencies_parsed_at":"2023-12-15T05:31:22.893Z","dependency_job_id":"cbe46b9a-c2a5-43f1-b90c-5c2d29f7921e","html_url":"https://github.com/websocket-client/websocket-client","commit_stats":{"total_commits":952,"total_committers":212,"mean_commits":4.490566037735849,"dds":0.6113445378151261,"last_synced_commit":"0fa5669fbd1d57a4bb1da580b3879f68d15a6d57"},"previous_names":["liris/websocket-client"],"tags_count":84,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/websocket-client","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":179484947,"owners_count":10822669,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"websocket-client","name":"websocket-client","uuid":"24536015","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/24536015?v=4","repositories_count":1,"last_synced_at":"2023-04-09T09:48:08.912Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/websocket-client","created_at":"2022-11-02T16:23:23.967Z","updated_at":"2023-04-09T09:48:08.925Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/websocket-client","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/websocket-client/repositories"},"tags":[{"name":"v1.7.0","sha":"85de6c7e14058ca37224303d5468a560413a6205","kind":"commit","published_at":"2023-12-03T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.7.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.7.0/manifests"},{"name":"v1.6.4","sha":"39a6876001d1170f0e1fc2754860a4697fe9b506","kind":"commit","published_at":"2023-10-08T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.6.4","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.6.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.6.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.6.4/manifests"},{"name":"v1.6.3","sha":"69dd1fda588a69f196d6dc142b6ce96366f6904f","kind":"commit","published_at":"2023-09-11T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.6.3","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.6.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.6.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.6.3/manifests"},{"name":"v1.6.2","sha":"b42e8b345cfa20389f6ef823ee4be291b86920f6","kind":"commit","published_at":"2023-08-22T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.6.2","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.6.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.6.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.6.2/manifests"},{"name":"v1.6.1","sha":"d91583c73e0bcde6420003952bb234b4172b3427","kind":"commit","published_at":"2023-06-23T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.6.1","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.6.1/manifests"},{"name":"v1.6.0","sha":"1825345c4c06a15884d80a4146299363a5d87c7a","kind":"commit","published_at":"2023-06-17T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.6.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.6.0/manifests"},{"name":"v1.5.3","sha":"99f60d4e2b8ec858f6f051a905c6c17ecb872d3b","kind":"commit","published_at":"2023-06-09T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.5.3","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.5.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.5.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.5.3/manifests"},{"name":"v1.5.2","sha":"7c39ddb91d6ed07974f3435d96e0d57a40435e54","kind":"commit","published_at":"2023-05-21T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.5.2","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.5.2/manifests"},{"name":"v1.5.1","sha":"8409d5f3583ab5f1c0fc2bcf91cf9ed11b0d06bf","kind":"commit","published_at":"2023-02-05T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.5.1","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.5.1/manifests"},{"name":"v1.5.0","sha":"91b76c8b1b34d08b56bc7e27fffd8e194174b5ba","kind":"commit","published_at":"2023-01-26T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.5.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.5.0/manifests"},{"name":"v1.4.2","sha":"c8c5a19da2a2015a64d08479e74779de7fd355de","kind":"commit","published_at":"2022-11-03T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.4.2","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.4.2/manifests"},{"name":"v1.4.1","sha":"37429a3efa1238cb5b6e5c056dd4e9190575d5ca","kind":"commit","published_at":"2022-09-04T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.4.1","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.4.1/manifests"},{"name":"v1.4.0","sha":"14b102d809295328fcf9fa87b396eff05b2d039f","kind":"commit","published_at":"2022-08-24T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.4.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.4.0/manifests"},{"name":"v1.3.3","sha":"61171591b08ee031e02cc6cb129952259062f502","kind":"commit","published_at":"2022-06-20T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.3.3","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.3.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.3.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.3.3/manifests"},{"name":"v1.3.2","sha":"c2625f99789ad71f5295b86a1d2e2217ee2c5886","kind":"commit","published_at":"2022-03-29T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.3.2","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.3.2/manifests"},{"name":"v1.3.1","sha":"db1f2cca25d9ca5c91ad678d04bada730a77ecdf","kind":"commit","published_at":"2022-02-25T20:55:07.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.3.1","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"500cc77327691486851ca9ff3f5ab0d6a227c9ba","kind":"commit","published_at":"2022-02-25T17:21:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.3.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.3.0/manifests"},{"name":"v1.2.3","sha":"0694848a93043b29e60c7653afb385839b1629b6","kind":"commit","published_at":"2021-12-07T16:30:22.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.2.3","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.2.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.2.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.2.3/manifests"},{"name":"v1.2.2","sha":"dff0ac116f28f7b9eab584752a29a6d480b8c94f","kind":"commit","published_at":"2021-12-07T02:58:06.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.2.2","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.2.2/manifests"},{"name":"v1.2.1","sha":"b8fc65ed8dc892c322b6ea1f8e1e8d5406f11612","kind":"commit","published_at":"2021-08-13T03:59:16.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.2.1","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"36213279ff64588cf458168b01138f6a9cfba440","kind":"commit","published_at":"2021-08-11T01:36:10.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.2.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"4249b500772583115fd30e3cd9a6cb85a1d3eb62","kind":"commit","published_at":"2021-08-06T01:27:30.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.1.1","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"11893bc746913f7bfeb85db62dfa6f0c2a1deb6e","kind":"commit","published_at":"2021-06-10T02:20:08.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.1.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.1.0/manifests"},{"name":"v1.0.1","sha":"b3dba5f881dfc9df0f4a401765ba757a74b99892","kind":"commit","published_at":"2021-05-22T01:16:14.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.0.1","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"b5ec9e9728d549258d9b9183c1857489bdf5c07f","kind":"commit","published_at":"2021-05-18T01:59:26.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.0.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.0.0/manifests"},{"name":"v0.59.0","sha":"8f072582d4bc21bb19fb4adee55a305da12790c1","kind":"commit","published_at":"2021-05-05T01:33:13.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.59.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.59.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.59.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.59.0/manifests"},{"name":"v0.58.0","sha":"bf1b7675c842e2a7a8ea4167216d16b18fee7f56","kind":"commit","published_at":"2021-03-03T01:48:12.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.58.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.58.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.58.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.58.0/manifests"},{"name":"v0.57.0","sha":"29c15714ac9f5272e1adefc9c99b83420b409f63","kind":"commit","published_at":"2019-12-25T12:43:20.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.57.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.57.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.57.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.57.0/manifests"},{"name":"v0.56.0","sha":"3c25814664fef5b78716ed8841123ed1c0d17824","kind":"tag","published_at":"2019-03-21T01:24:19.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.56.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.56.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.56.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.56.0/manifests"},{"name":"v0.54.0","sha":"102033e44bcc9badf85c78769516d3f9127ebdc7","kind":"tag","published_at":"2018-11-01T04:31:44.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.54.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.54.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.54.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.54.0/manifests"},{"name":"v0.53.0","sha":"efcf31b30122e05701fb3f696b029baf8faa6d8e","kind":"commit","published_at":"2018-09-09T13:19:30.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.53.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.53.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.53.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.53.0/manifests"},{"name":"v0.52.0","sha":"601486746a29b9d5bfe15691084ff7d1e70b2ac9","kind":"commit","published_at":"2018-09-03T10:12:28.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.52.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.52.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.52.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.52.0/manifests"},{"name":"v0.51.0","sha":"ae589495b75162703ab4fe1f8712f50d22b12d4e","kind":"commit","published_at":"2018-08-19T11:02:13.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.51.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.51.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.51.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.51.0/manifests"},{"name":"v0.50.0","sha":"bb3ca55e79cdd5cceb6a931a2c92679b9fb87aa9","kind":"commit","published_at":"2018-08-18T05:49:09.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.50.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.50.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.50.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.50.0/manifests"},{"name":"v0.49.0","sha":"e4a012d8ad13e85b13e3ed60232ec09dbaf3ab8e","kind":"commit","published_at":"2018-08-14T06:50:10.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.49.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.49.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.49.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.49.0/manifests"},{"name":"v0.48.0","sha":"df275d351f9887fba2774e2e1aa79ff1e5a24bd1","kind":"commit","published_at":"2018-05-27T05:09:36.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.48.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.48.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.48.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.48.0/manifests"},{"name":"v0.47.0","sha":"87861f951d1a65ed5d9080f7aaaf44310f376c56","kind":"commit","published_at":"2018-02-16T00:43:14.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.47.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.47.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.47.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.47.0/manifests"},{"name":"v0.46.0","sha":"badde5916e5590e1075f13e190c36d0d28bdb81c","kind":"commit","published_at":"2017-12-30T11:27:44.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.46.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.46.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.46.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.46.0/manifests"},{"name":"v0.45.0","sha":"8f0274415fad055a02bb3ec0577001c0775904f9","kind":"commit","published_at":"2017-12-24T06:33:35.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.45.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.45.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.45.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.45.0/manifests"},{"name":"v0.44.0","sha":"9a9429a9111e275793021f91d1a1a1e6e72a1dd1","kind":"tag","published_at":"2017-06-23T11:58:10.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.44.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.44.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.44.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.44.0/manifests"},{"name":"v0.43.0","sha":"9a28437252c7c953e208ed07ff1811d1dc7b8c41","kind":"commit","published_at":"2017-06-21T11:44:42.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.43.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.43.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.43.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.43.0/manifests"},{"name":"v0.41.1","sha":"6ccdcb21d4767e31b43319e2d595cf0da4774d00","kind":"commit","published_at":"2017-06-18T09:05:25.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.41.1","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.41.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.41.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.41.1/manifests"},{"name":"v0.41.0","sha":"f992476b65d021c4f567c3781dd5475ba2374007","kind":"commit","published_at":"2017-06-18T07:43:34.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.41.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.41.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.41.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.41.0/manifests"},{"name":"v0.40.0","sha":"7d682da323f421241ed11dcf797d9baa15e2debe","kind":"commit","published_at":"2016-12-09T02:09:41.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.40.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.40.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.40.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.40.0/manifests"},{"name":"v0.39.0","sha":"bb62b656a2f5e7e425ffc60456412abff06c82d9","kind":"commit","published_at":"2016-12-02T00:58:30.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.39.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.39.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.39.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.39.0/manifests"},{"name":"v0.37.0","sha":"3ca245de52b0ffc914649110ce5a1fdb6abaeb45","kind":"tag","published_at":"2016-04-14T00:28:23.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.37.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.37.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.37.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.37.0/manifests"},{"name":"v0.36.0","sha":"fa97b1727fac15dcf092653403cbf0ab490a1fc6","kind":"tag","published_at":"2016-04-12T00:03:52.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.36.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.36.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.36.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.36.0/manifests"},{"name":"v0.34.0","sha":"4d5bc1e4e3622265ef7dc54281c0f73bb4dd98d6","kind":"tag","published_at":"2015-10-28T00:23:14.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.34.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.34.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.34.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.34.0/manifests"},{"name":"v0.33.0","sha":"f239e4965eb8b2cd61b3fd11355550fdc101b4e7","kind":"tag","published_at":"2015-10-28T00:20:44.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.33.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.33.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.33.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.33.0/manifests"},{"name":"v0.32.0","sha":"41bd2d4d96175ed5d80800cf3db48084ea901156","kind":"tag","published_at":"2015-06-03T00:45:39.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.32.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.32.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.32.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.32.0/manifests"},{"name":"v0.31.0","sha":"0868c9530089290972a4e0b69e65086d98526e01","kind":"tag","published_at":"2015-05-22T02:03:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.31.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.31.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.31.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.31.0/manifests"},{"name":"v0.30.0","sha":"5bfad93a7fc1d370b9058d2cbf35afc897dd68ee","kind":"commit","published_at":"2015-04-21T00:22:46.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.30.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.30.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.30.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.30.0/manifests"},{"name":"v0.29.0","sha":"55ef417645249a923df3dff89b3f0ede17715990","kind":"tag","published_at":"2015-04-01T03:20:08.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.29.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.29.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.29.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.29.0/manifests"},{"name":"v0.28.0","sha":"802bc13ee850f15ec55f1308f543f65fb267a473","kind":"tag","published_at":"2015-04-01T01:12:59.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.28.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.28.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.28.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.28.0/manifests"},{"name":"v0.27.0","sha":"bb5f395eb242250711336eaf2021f79e81a6459c","kind":"tag","published_at":"2015-03-31T22:49:29.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.27.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.27.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.27.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.27.0/manifests"},{"name":"v0.25.0","sha":"10bbe19c1a4c493fbfcce3f02f850a954310edf2","kind":"tag","published_at":"2015-02-23T04:35:30.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.25.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.25.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.25.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.25.0/manifests"},{"name":"v0.24.0","sha":"2d022281340e7a3044f96f50edee66023395b8f1","kind":"tag","published_at":"2015-02-22T23:52:38.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.24.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.24.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.24.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.24.0/manifests"},{"name":"v0.22.0","sha":"13f42877b881a2a032706e4533bbb4cc418b1fc6","kind":"tag","published_at":"2014-12-02T23:19:36.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.22.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.22.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.22.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.22.0/manifests"},{"name":"v0.21.0","sha":"dea565c92ed93834f222ba9faabdea932ba73837","kind":"tag","published_at":"2014-10-16T23:14:47.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.21.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.21.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.21.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.21.0/manifests"},{"name":"v0.20.0","sha":"322687e9874e9d7d9a5b7382b3c2ac4e8166edca","kind":"tag","published_at":"2014-10-10T02:36:33.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.20.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.20.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.20.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.20.0/manifests"},{"name":"v0.19.0","sha":"6cd876d7067d2c1e22fee3495cb369901356715c","kind":"tag","published_at":"2014-10-09T23:03:42.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.19.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.19.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.19.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.19.0/manifests"},{"name":"v0.18.0","sha":"dd32067a41bf4666a81d2e725fcd3146e570832c","kind":"commit","published_at":"2014-08-27T03:56:20.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.18.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.18.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.18.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.18.0/manifests"},{"name":"v0.17.0","sha":"0e7b000ff828b389d8aa29afa7cd34d26f0b3082","kind":"commit","published_at":"2014-08-22T05:43:57.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.17.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.17.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.17.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.17.0/manifests"},{"name":"v0.16.0a","sha":"1cc117110959225d8b629e41b49b8b580ae24a19","kind":"commit","published_at":"2014-07-17T05:57:28.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.16.0a","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.16.0a","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.16.0a","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.16.0a/manifests"},{"name":"v0.16.0","sha":"e47ba0b9df954a58937087c928ae26625ecc81ab","kind":"commit","published_at":"2014-07-16T01:10:12.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.16.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.16.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.16.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.16.0/manifests"},{"name":"v0.14.1","sha":"99c8cf45dd34a8c7974ed39efadd642b69c692ab","kind":"commit","published_at":"2014-05-19T22:56:04.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.14.1","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.14.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.14.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.14.1/manifests"},{"name":"v0.14.0","sha":"f6da33e6f292ef3e0ca21d9bbe8d7ab541d649a1","kind":"tag","published_at":"2014-05-15T00:37:22.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.14.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.14.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.14.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.14.0/manifests"},{"name":"v0.13.1-py3","sha":"fd95aabd706b93b3b8862a9ae0cc1cc3c656d04c","kind":"commit","published_at":"2014-04-25T03:29:37.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.13.1-py3","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.13.1-py3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.13.1-py3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.13.1-py3/manifests"},{"name":"v0.13.0-py3","sha":"e197939d13361706a6773c64bdc451cf59e49189","kind":"commit","published_at":"2014-04-14T21:57:21.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.13.0-py3","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.13.0-py3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.13.0-py3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.13.0-py3/manifests"},{"name":"v0.13.0","sha":"6894bfc6a8d4350936f1b1bbe24c413b21765d7c","kind":"commit","published_at":"2014-04-13T07:18:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.13.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.13.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.13.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.13.0/manifests"},{"name":"v0.12.0-py3","sha":"22128ca285a36a64cecfc2338492d4f4bbb05155","kind":"tag","published_at":"2013-09-13T00:31:39.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.12.0-py3","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.12.0-py3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.12.0-py3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.12.0-py3/manifests"},{"name":"v0.12.0","sha":"9cd13676b090b02b7b0aedcbaeecbab20cf4fcb4","kind":"tag","published_at":"2013-09-13T00:31:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.12.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.12.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.12.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.12.0/manifests"},{"name":"v0.11.0","sha":"23297a7b2a97494355fc46e43f07707209265acd","kind":"tag","published_at":"2013-05-23T06:03:20.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.11.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.11.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.11.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.11.0/manifests"},{"name":"v0.11.0-py3","sha":"99e46b451197963d6369f987469053b7c03ffda1","kind":"tag","published_at":"2013-05-23T06:02:53.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.11.0-py3","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.11.0-py3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.11.0-py3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.11.0-py3/manifests"},{"name":"v0.10.0-py3","sha":"db76596a2f393d3f1ee9fdc7313a5cbfefa0ca5a","kind":"tag","published_at":"2013-03-22T05:28:58.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.10.0-py3","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.10.0-py3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.10.0-py3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.10.0-py3/manifests"},{"name":"v0.10.0","sha":"7573c84a52f14aff26eb25df6af9da677fa77703","kind":"tag","published_at":"2013-03-22T05:16:36.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.10.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.10.0/manifests"},{"name":"v0.9.0","sha":"4e0cf4bf36f71bf2242f2ba22fe3c4ee8630efcd","kind":"tag","published_at":"2013-02-18T07:18:12.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.9.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.9.0/manifests"},{"name":"v0.8.0","sha":"c2937e2f02e8ba8d70799f2d77558a33986072a3","kind":"tag","published_at":"2012-09-14T01:51:43.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.8.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.8.0/manifests"},{"name":"v0.7.0","sha":"b4695737d2a8a8ba13074bd2fce75ef814674e26","kind":"tag","published_at":"2012-04-03T02:19:30.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.7.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.7.0/manifests"},{"name":"v0.6.0","sha":"23b12bb7aa178866cb5e94bf38b8fb635e7f11ff","kind":"tag","published_at":"2012-03-02T06:09:16.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.6.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.6.0/manifests"},{"name":"v0.5.0","sha":"33401d6e4d77f605fabd51b838a3fd0eccdae687","kind":"tag","published_at":"2012-01-18T00:58:42.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.5.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.5.0/manifests"},{"name":"v0.4.1","sha":"673470f799aadf1991aa9282e325b973077bae87","kind":"commit","published_at":"2011-02-28T08:43:52.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.4.1","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.4.1/manifests"},{"name":"v0.4.0","sha":"92ebf3cfcd9dce7160686692d3496d537b577286","kind":"commit","published_at":"2011-01-06T09:36:39.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.4.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.4.0/manifests"},{"name":"v0.3.0","sha":"a1538ab23f1717c1b1c58caf23539d74e82a5316","kind":"commit","published_at":"2011-01-04T03:54:47.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.3.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.3.0/manifests"}]},"repo_metadata_updated_at":"2024-01-06T13:59:30.843Z","dependent_packages_count":982,"downloads":114369665,"downloads_period":"last-month","dependent_repos_count":36116,"rankings":{"downloads":0.01815824081495652,"dependent_repos_count":0.035766231908247695,"dependent_packages_count":0.02696223636160211,"stargazers_count":1.8257285764856284,"forks_count":1.9216554446292875,"docker_downloads_count":0.004952247494988142,"average":0.6388704962824517},"purl":"pkg:pypi/websocket-client","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/websocket-client","docker_dependents_count":7481,"docker_downloads_count":5596517205,"usage_url":"https://repos.ecosyste.ms/usage/pypi/websocket-client","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/websocket-client/dependencies","status":null,"funding_links":[],"critical":true,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/websocket-client/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/websocket-client/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/websocket-client/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/websocket-client/related_packages","maintainers":[{"uuid":"ukwksk","login":"ukwksk","name":null,"email":null,"url":null,"packages_count":3,"html_url":"https://pypi.org/user/ukwksk/","role":null,"created_at":"2022-12-07T16:17:21.402Z","updated_at":"2022-12-07T16:17:21.402Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/ukwksk/packages"},{"uuid":"engin33r","login":"engin33r","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/engin33r/","role":null,"created_at":"2022-12-07T16:17:21.388Z","updated_at":"2022-12-07T16:17:21.388Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/engin33r/packages"},{"uuid":"liris","login":"liris","name":null,"email":null,"url":null,"packages_count":3,"html_url":"https://pypi.org/user/liris/","role":null,"created_at":"2022-12-07T16:17:21.395Z","updated_at":"2022-12-07T16:17:21.395Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/liris/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":690329,"maintainers_count":292761,"namespaces_count":0,"keywords_count":228590,"github":"pypi","metadata":{"funded_packages_count":48950},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-06T05:32:09.692Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}},"unique_repositories_count":56,"unique_repositories_count_past_30_days":5,"recent_issues":[{"uuid":"4464825372","node_id":"PR_kwDOSIAG287cb6Go","number":45,"state":"open","title":"chore(deps): bump the all group in /gateway with 5 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-17T20:22:22.000Z","updated_at":"2026-05-17T20:23:39.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"all","update_count":5,"packages":[{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"websockify","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/novnc/websockify"},{"name":"cryptography","old_version":"44.0.0","new_version":"48.0.0","repository_url":"https://github.com/pyca/cryptography"},{"name":"pymupdf","old_version":"1.25.3","new_version":"1.27.2.3","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-docx","old_version":"1.1.2","new_version":"1.2.0","repository_url":"https://github.com/python-openxml/python-docx"}],"path":"/gateway","ecosystem":"pip"},"body":"Bumps the all group in /gateway with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [websockify](https://github.com/novnc/websockify) | `0.12.0` | `0.13.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.0` | `48.0.0` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.3` | `1.27.2.3` |\n| [python-docx](https://github.com/python-openxml/python-docx) | `1.1.2` | `1.2.0` |\n\nUpdates `websocket-client` from 1.8.0 to 1.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e1.9.0\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6861ee417b65c183a81671bc57cace26c9c7ee29\"\u003e\u003ccode\u003e6861ee4\u003c/code\u003e\u003c/a\u003e Use ipaddress module for no_proxy parsing (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/729bdb8fc063397d298261ed6f2288f272b7f6de\"\u003e\u003ccode\u003e729bdb8\u003c/code\u003e\u003c/a\u003e Coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/f22579afed961d89a306d0018f373922bf567d22\"\u003e\u003ccode\u003ef22579a\u003c/code\u003e\u003c/a\u003e Linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/9564030bed1112497bf1c879673870419365a064\"\u003e\u003ccode\u003e9564030\u003c/code\u003e\u003c/a\u003e Change echo URL in docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/c0fe0f7a18867599c9b62fc61f71036a8d5bdfcf\"\u003e\u003ccode\u003ec0fe0f7\u003c/code\u003e\u003c/a\u003e apply black formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/813d570fc95114aa48e8ddf8b767390a1a6985f7\"\u003e\u003ccode\u003e813d570\u003c/code\u003e\u003c/a\u003e Resolve all mypy errors, with AI assistance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6020f37e784b77f6627b38797595f038aa76f26e\"\u003e\u003ccode\u003e6020f37\u003c/code\u003e\u003c/a\u003e black formatting fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.8.0...v1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `websockify` from 0.12.0 to 0.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/novnc/websockify/releases\"\u003ewebsockify's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.13.0\u003c/h2\u003e\n\u003ch1\u003eMajor Changes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python \u0026lt; 3.6 has been dropped.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://en.wikipedia.org/wiki/Server_Name_Indication\"\u003eSNI\u003c/a\u003e is enabled when connecting to an SSL target as an SSL client.\u003c/li\u003e\n\u003cli\u003eThe TokenRedis plugin handles namespaces.\u003c/li\u003e\n\u003cli\u003eHeaders are sanitized before being passed to authentication plugins.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/novnc/websockify/blob/master/CHANGES.txt\"\u003ewebsockify's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.13.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python \u0026lt; 3.6 has been dropped.\u003c/li\u003e\n\u003cli\u003eSNI is enabled when connecting to an SSL target as an SSL client.\u003c/li\u003e\n\u003cli\u003eThe TokenRedis plugin handles namespaces.\u003c/li\u003e\n\u003cli\u003eHeaders are sanitized before being passed to authentication plugins.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/e81894751365afc19fe64fc9d0e5c6fc52655c36\"\u003e\u003ccode\u003ee818947\u003c/code\u003e\u003c/a\u003e websockify 0.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/0d519b9c18139bcdee7f1bdb9dc785be26bdab29\"\u003e\u003ccode\u003e0d519b9\u003c/code\u003e\u003c/a\u003e Fix fake headers dict in tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/187e204ce403e7aac0ea67348eaad012a68f10bb\"\u003e\u003ccode\u003e187e204\u003c/code\u003e\u003c/a\u003e Clear out sensitive fake headers from client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/417210f2cf8db9cd3cd9d86c45ef954778176b0e\"\u003e\u003ccode\u003e417210f\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of \u003ca href=\"https://github.com/so-saf/websockify\"\u003ehttps://github.com/so-saf/websockify\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/245fd08e52604c76e877c94da1dc286f87c90c75\"\u003e\u003ccode\u003e245fd08\u003c/code\u003e\u003c/a\u003e Use standard line endings in sysloghandler.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/3f205f7cc6131368631c8b0cb17c3aa5689507e9\"\u003e\u003ccode\u003e3f205f7\u003c/code\u003e\u003c/a\u003e drop python\u0026lt;3.6 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/0af3404ec91ae827275af0a8e474add5afffaf81\"\u003e\u003ccode\u003e0af3404\u003c/code\u003e\u003c/a\u003e Add namespace value to TokenRedis source\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/5989d31ebf1a84bc6c6bdb7b32b4a9ea5437f36d\"\u003e\u003ccode\u003e5989d31\u003c/code\u003e\u003c/a\u003e Add namespace value to TokenRedis source\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/b6c02b13e3ce706dff6f96f754ef1682d9062258\"\u003e\u003ccode\u003eb6c02b1\u003c/code\u003e\u003c/a\u003e Include host in TLS setup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/f632fa0285181c1ff1a39c9c4b36795e3f6d9373\"\u003e\u003ccode\u003ef632fa0\u003c/code\u003e\u003c/a\u003e Use SSLContext.wrap_context() for SSL/TLS sockets\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/novnc/websockify/compare/v0.12.0...v0.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 44.0.0 to 48.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e48.0.0 - 2026-05-04\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for Python 3.8 has been removed.\n  ``cryptography`` now requires Python 3.9 or later.\n* **BACKWARDS INCOMPATIBLE:** Loading an X.509 CRL whose inner\n  ``TBSCertList.signature`` algorithm does not match the outer\n  ``signatureAlgorithm`` now raises ``ValueError``. Previously, such CRLs\n  were parsed successfully and only rejected during signature validation.\n* Added support for :doc:`/hazmat/primitives/asymmetric/mlkem` and\n  :doc:`/hazmat/primitives/asymmetric/mldsa` when using OpenSSL 3.5.0 or\n  later, in addition to the existing AWS-LC and BoringSSL support. This means\n  post-quantum algorithms are now available to users of our wheels.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Going forward, we do not guarantee that all functionality\u003cbr /\u003e\nin \u003ccode\u003ecryptography\u003c/code\u003e will be available when building against\u003cbr /\u003e\nOpenSSL. See :doc:\u003ccode\u003e/statements/state-of-openssl\u003c/code\u003e for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v47-0-0:\u003c/p\u003e\n\u003cp\u003e47.0.0 - 2026-04-24\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.8 is deprecated and will be removed in the next\n\u003ccode\u003ecryptography\u003c/code\u003e release.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for binary elliptic curves\n(\u003ccode\u003eSECT*\u003c/code\u003e classes) has been removed. These curves are rarely used and\nhave additional security considerations that make them undesirable.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for OpenSSL 1.1.x has been removed.\nOpenSSL 3.0.0 or later is now required. LibreSSL, BoringSSL, and AWS-LC\ncontinue to be supported.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Dropped support for LibreSSL \u0026lt; 4.1.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Loading keys with unsupported algorithms or\nkeys with unsupported explicit curve encodings now raises\n:class:\u003ccode\u003e~cryptography.exceptions.UnsupportedAlgorithm\u003c/code\u003e instead of\n\u003ccode\u003eValueError\u003c/code\u003e. This change affects\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_pem_private_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_der_private_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_pem_public_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_der_public_key\u003c/code\u003e,\nand :meth:\u003ccode\u003e~cryptography.x509.Certificate.public_key\u003c/code\u003e when called on\ncertificates with unsupported public key algorithms.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e When parsing elliptic curve private keys, we now\nreject keys that incorrectly encode a private key of the wrong length because\nsuch keys are impossible to process in a constant-time manner. We do not\nbelieve keys with this problem are in wide use, however we may revert this\nchange based on the feedback we receive.\u003c/li\u003e\n\u003cli\u003eDeprecated passing 64-bit (8-byte) and 128-bit (16-byte) keys to\n:class:\u003ccode\u003e~cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES\u003c/code\u003e. In a\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/8e03e30e3aae01632a697e903e3593c924f0139d\"\u003e\u003ccode\u003e8e03e30\u003c/code\u003e\u003c/a\u003e bump for 48.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14796\"\u003e#14796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/295e0d254ef31ab864730aa41312ec355416ee71\"\u003e\u003ccode\u003e295e0d2\u003c/code\u003e\u003c/a\u003e Add AGENTS.md with CLAUDE.md symlink (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14794\"\u003e#14794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/104a2de19e268a433e6da92be9cb872dcf0003c8\"\u003e\u003ccode\u003e104a2de\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14793\"\u003e#14793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/67ec1e51988195e17993d2edef5258b27509b926\"\u003e\u003ccode\u003e67ec1e5\u003c/code\u003e\u003c/a\u003e call check_length early on AesSiv::encrypt (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14792\"\u003e#14792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/b2da57a0d9e4bfd2b95364299091a18f74127b26\"\u003e\u003ccode\u003eb2da57a\u003c/code\u003e\u003c/a\u003e changelog for mldsa/mlkem for openssl (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14791\"\u003e#14791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/3cf44adee25c368d4a136e072fa9f80465d91eb0\"\u003e\u003ccode\u003e3cf44ad\u003c/code\u003e\u003c/a\u003e ML-KEM OpenSSL support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14781\"\u003e#14781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2e31639666766f846fbab2c605879db0fa64fe83\"\u003e\u003ccode\u003e2e31639\u003c/code\u003e\u003c/a\u003e ML-DSA OpenSSL support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14773\"\u003e#14773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/5affe5a286a986fdf512c4a5cb280d28a96c10e3\"\u003e\u003ccode\u003e5affe5a\u003c/code\u003e\u003c/a\u003e fix rust nightly clippy (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14790\"\u003e#14790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2e73ca448eaf64b6f0d4ffbb794cf96170cef5ec\"\u003e\u003ccode\u003e2e73ca4\u003c/code\u003e\u003c/a\u003e bump rust-openssl dep and update EcPoint::mul_generator to mul_generator2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/82ebd3b9f49d49ad5fd8b4b1f1dd02487b6e1466\"\u003e\u003ccode\u003e82ebd3b\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14785\"\u003e#14785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/44.0.0...48.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pymupdf` from 1.25.3 to 1.27.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pymupdf/pymupdf/releases\"\u003epymupdf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyMuPDF-1.27.2.3 released\u003c/h2\u003e\n\u003cp\u003eWheels for Windows, Linux and MacOS, and the sdist, are available on\n\u003ca href=\"https://pypi.org\"\u003ehttps://pypi.org\u003c/a\u003e and can be installed in the usual way, for example:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython -m pip install --upgrade pymupdf\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2.3\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4928\"\u003e#4928\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4942\"\u003e#4942\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4954\"\u003e#4954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4958\"\u003e#4958\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOther:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed incorrect generation of \u003ccode\u003elineJoin j\u003c/code\u003e in PDF content, introduced in 1.27.2.2.\u003c/li\u003e\n\u003cli\u003eAllow build to (incorrectly) claim to be thread-safe, for \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4760\"\u003e#4760\u003c/a\u003e. See setup.py for details.\u003c/li\u003e\n\u003cli\u003eUse pypi.org's pipcl package instead of our own pipcl.py file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePyMuPDF-1.27.2.2 released\u003c/h2\u003e\n\u003cp\u003eWheels for Windows, Linux and MacOS, and the sdist, are available on\n\u003ca href=\"https://pypi.org\"\u003ehttps://pypi.org\u003c/a\u003e and can be installed in the usual way, for example:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython -m pip install --upgrade pymupdf\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2.2\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4902\"\u003e#4902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4932\"\u003e#4932\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOther:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eAnnot.__bool__()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePyMuPDF-1.27.2 released\u003c/h2\u003e\n\u003cp\u003eWheels for Windows, Linux and MacOS, and the sdist, are available on \u003ca href=\"https://pypi.org\"\u003ehttps://pypi.org\u003c/a\u003e and can be installed in the usual way, for example:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython -m pip install --upgrade pymupdf\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2\u003c/strong\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pymupdf/PyMuPDF/blob/main/changes.txt\"\u003epymupdf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChange Log\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2.3\u003c/strong\u003e (2026-04-24)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4928 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4928\u0026gt;\u003c/code\u003e_: pymupdf.Document.scrub raises AttributeError for a document with annotations\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4942 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4942\u0026gt;\u003c/code\u003e_: bug: IndexError for Page.get_links after Page.clip_to_rect\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4954 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4954\u0026gt;\u003c/code\u003e_: get_drawings() returns incorrect lineJoin and width\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4958 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4958\u0026gt;\u003c/code\u003e_: bug: inserting rotated pages to another document messes up link coordinates\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOther:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed incorrect generation of \u003ccode\u003elineJoin j\u003c/code\u003e in PDF content, introduced in 1.27.2.2.\u003c/li\u003e\n\u003cli\u003eAllow build to (incorrectly) claim to be thread-safe, for \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4760\"\u003e#4760\u003c/a\u003e. See setup.py for details.\u003c/li\u003e\n\u003cli\u003eUse pypi.org's pipcl package instead of our own pipcl.py file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2.2\u003c/strong\u003e (2026-03-20)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4902 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4902\u0026gt;\u003c/code\u003e_: Incorrect linewidth in elements returned by Page.get_texttrace()\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4932 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4932\u0026gt;\u003c/code\u003e_: \u0026quot;Page\u0026quot; has no attribute \u0026quot;find_tables\u0026quot; in PyMuPDF 1.27\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOther:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eAnnot.__bool__()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2.\u003c/strong\u003e (2026-03-10)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUse MuPDF-1.27.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4903 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4903\u0026gt;\u003c/code\u003e_: Typing broken because of \u003ccode\u003e*_forward_decl\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOther:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRetrospectively marked \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4907\"\u003e#4907\u003c/a\u003e as fixed in pymupdf-1.27.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved \u003ccode\u003eget_textpage_ocr()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eFor partial OCR, \u003cstrong\u003eall\u003c/strong\u003e page areas outside legible text are now OCRed, not\njust those within images. This means that OCR will now also be performed\nfor vector graphics, and for text containing illegible characters.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProvide a Linux wheel for free-threading python,\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/bf51516c1b1146d357e3705473f7dea6a405a589\"\u003e\u003ccode\u003ebf51516\u003c/code\u003e\u003c/a\u003e Update version to 1.27.2.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/e5bddbbf4f4633ce2b6261f18ab6c9fb8a8bb857\"\u003e\u003ccode\u003ee5bddbb\u003c/code\u003e\u003c/a\u003e scripts/ tests/: updated to match new location of pipcl.py in src/.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/eda615d19e56ca9b7123b0030773fea3a3cf8dc6\"\u003e\u003ccode\u003eeda615d\u003c/code\u003e\u003c/a\u003e Move pipcl.py and wdev.py into src/.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/a7fe8b3683cda27684a5863a2de38e2b80165feb\"\u003e\u003ccode\u003ea7fe8b3\u003c/code\u003e\u003c/a\u003e changes.txt: updates for next release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/61da30ac418846be0b0a559ca407a3ad786f5d5f\"\u003e\u003ccode\u003e61da30a\u003c/code\u003e\u003c/a\u003e tests/test_drawings.py: New tests for \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4954\"\u003e#4954\u003c/a\u003e: test_4954_1() test_4954_2().\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/5445fc01c6edb3397df2768febddf4da9802d9ae\"\u003e\u003ccode\u003e5445fc0\u003c/code\u003e\u003c/a\u003e docs/conf.py: change how we look for version numbers in setup.py and scripts/...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/1792ef0da7f801865e79278d1644b31de96c50f5\"\u003e\u003ccode\u003e1792ef0\u003c/code\u003e\u003c/a\u003e pyproject.toml: require package pipcl for building.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/237f0976fa75fd010ab5d838dc1ce714d7cd87ce\"\u003e\u003ccode\u003e237f097\u003c/code\u003e\u003c/a\u003e tests/: fix tests if we are incorrectly claiming to be thread safe.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/cd89bb04ee92c6e1f831bb5ae6d84ddd296987e4\"\u003e\u003ccode\u003ecd89bb0\u003c/code\u003e\u003c/a\u003e tests/conftest.py: also install pipcl, as we move to using pipcl package.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/341eab2d3b10a03cdd34b64a6acaeb38f43e8d9b\"\u003e\u003ccode\u003e341eab2\u003c/code\u003e\u003c/a\u003e setup.py: added support for incorrectly claiming to be thread-safe, for \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4760\"\u003e#4760\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pymupdf/pymupdf/compare/1.25.3...1.27.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-docx` from 1.1.2 to 1.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-openxml/python-docx/blob/master/HISTORY.rst\"\u003epython-docx's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.2.0 (2025-06-16)\n++++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for comments\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8, add testing for Python 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/e45454602b53e8e572b179ccf1c91093ec9f4ed7\"\u003e\u003ccode\u003ee454546\u003c/code\u003e\u003c/a\u003e release: prepare v1.2.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/1fe660198aab18a421c95d019f53b2aa22d2fe2f\"\u003e\u003ccode\u003e1fe6601\u003c/code\u003e\u003c/a\u003e build: small adjustments for tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/4fbe1f684e08aa7eebb0ce6bfedfce512b5c95a2\"\u003e\u003ccode\u003e4fbe1f6\u003c/code\u003e\u003c/a\u003e docs: add Comments docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/a809d6cc8aec18648850d8b94d554f05621e433a\"\u003e\u003ccode\u003ea809d6c\u003c/code\u003e\u003c/a\u003e comments: add Comment.text\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/e3a321d26195fdd6e368f59b63be06b1277dac14\"\u003e\u003ccode\u003ee3a321d\u003c/code\u003e\u003c/a\u003e comments: add Run.mark_comment_range()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/af3b973dd2c938f6851537978fe76f4f5e91dcc9\"\u003e\u003ccode\u003eaf3b973\u003c/code\u003e\u003c/a\u003e comments: add Document.add_comment()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/66da52204db395466cc7ea033af0f5bffd228953\"\u003e\u003ccode\u003e66da522\u003c/code\u003e\u003c/a\u003e xfail: acceptance test for Document.add_comment()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/761f4ccd7751afeeaa5fff5c6f47325c3e0970fa\"\u003e\u003ccode\u003e761f4cc\u003c/code\u003e\u003c/a\u003e comments: add Comment.author, .initials setters\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/8ac9fc4f6b50b9b7f208974e853f1995d63a834a\"\u003e\u003ccode\u003e8ac9fc4\u003c/code\u003e\u003c/a\u003e comments: add Comments.add_comment()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/d360409273a9fdfd2d6a26a7f35b8f3bfc781f04\"\u003e\u003ccode\u003ed360409\u003c/code\u003e\u003c/a\u003e xfail: acceptance test for Comment mutations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-openxml/python-docx/compare/v1.1.2...v1.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/yourhq/yourhq/pull/45","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/yourhq%2Fyourhq/issues/45","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/45/packages"},{"uuid":"4436075183","node_id":"PR_kwDOSQYphM7bBX80","number":206,"state":"open","title":"deps(survey-cli)(deps): update websocket-client requirement from \u003e=1.6.0 to \u003e=1.9.0 in /survey-cli","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-13T08:08:50.000Z","updated_at":"2026-05-13T08:08:51.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(survey-cli)(deps): update","packages":[{"name":"websocket-client","old_version":"\u003e=1.6.0","new_version":"\u003e=1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":"/survey-cli","ecosystem":"pip"},"body":"Updates the requirements on [websocket-client](https://github.com/websocket-client/websocket-client) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.8.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eon_reconnect\u003c/code\u003e parameter to WebSocketApp to handle callback ambiguity (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove handling of SSLEOFError and use reconnect bool (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor linting and docs CI build upgrades (981c00e, 75ba91a, bec2608)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.7.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRenamed \u003ccode\u003emask\u003c/code\u003e variable in ABNF to prevent name collision with \u003ccode\u003emask()\u003c/code\u003e function (9b51f73)\u003c/li\u003e\n\u003cli\u003eFixed old http import of HTTPStatus in _handshake.py (9b51f73)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esend_text()\u003c/code\u003e and \u003ccode\u003esend_bytes()\u003c/code\u003e to _app.py (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved typehint support (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e, 9b51f73, 8b73d00)\u003c/li\u003e\n\u003cli\u003eGeneral readability improvements, made all string concatenations use f-strings (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/909\"\u003e#909\u003c/a\u003e, 780584f, 3eabc6e)\u003c/li\u003e\n\u003cli\u003eApplied black formatting style to code (da7f286)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.4\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/952\"\u003e#952\u003c/a\u003e, add support for HTTP 307 and 308 redirect codes (69468ad)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix type hints issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/949\"\u003e#949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Python beta release 3.12 in CI (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/946\"\u003e#946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd maintainer email in setup.py (3d464fc)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for SSLKEYLOGFILE environment variable (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/943\"\u003e#943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for callable header arguments (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/932\"\u003e#932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChange handling of proxy environment variables, is_secure set to true now prevents http_proxy from getting used (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/929\"\u003e#929\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Dispatcher keyboard interrupt. Should solve reconnect loop with rel (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/924\"\u003e#924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix teardown issue when ping thread is not properly ended (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/918\"\u003e#918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix double ping wait time on first ping (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/912\"\u003e#912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor type hints improvements (eda6724, 54b3013)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.5.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logic to avoid error in the case where content-length header does not exist, bug introduced in 1.5.2 (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix wsdump.py script typing, bug introduced in 1.5.2 (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6861ee417b65c183a81671bc57cace26c9c7ee29\"\u003e\u003ccode\u003e6861ee4\u003c/code\u003e\u003c/a\u003e Use ipaddress module for no_proxy parsing (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/729bdb8fc063397d298261ed6f2288f272b7f6de\"\u003e\u003ccode\u003e729bdb8\u003c/code\u003e\u003c/a\u003e Coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/f22579afed961d89a306d0018f373922bf567d22\"\u003e\u003ccode\u003ef22579a\u003c/code\u003e\u003c/a\u003e Linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/9564030bed1112497bf1c879673870419365a064\"\u003e\u003ccode\u003e9564030\u003c/code\u003e\u003c/a\u003e Change echo URL in docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/c0fe0f7a18867599c9b62fc61f71036a8d5bdfcf\"\u003e\u003ccode\u003ec0fe0f7\u003c/code\u003e\u003c/a\u003e apply black formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/813d570fc95114aa48e8ddf8b767390a1a6985f7\"\u003e\u003ccode\u003e813d570\u003c/code\u003e\u003c/a\u003e Resolve all mypy errors, with AI assistance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6020f37e784b77f6627b38797595f038aa76f26e\"\u003e\u003ccode\u003e6020f37\u003c/code\u003e\u003c/a\u003e black formatting fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.6.0...v1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/SIN-CLIs/stealth-runner/pull/206","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SIN-CLIs%2Fstealth-runner/issues/206","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/206/packages"},{"uuid":"4425082122","node_id":"PR_kwDOSazcLc7adyXe","number":7,"state":"open","title":"Update websocket-client requirement from \u003e=1.7.0 to \u003e=1.9.0","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-11T23:42:13.000Z","updated_at":"2026-05-11T23:42:17.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"websocket-client","old_version":"\u003e=1.7.0","new_version":"\u003e=1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [websocket-client](https://github.com/websocket-client/websocket-client) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.8.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eon_reconnect\u003c/code\u003e parameter to WebSocketApp to handle callback ambiguity (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove handling of SSLEOFError and use reconnect bool (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor linting and docs CI build upgrades (981c00e, 75ba91a, bec2608)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.7.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRenamed \u003ccode\u003emask\u003c/code\u003e variable in ABNF to prevent name collision with \u003ccode\u003emask()\u003c/code\u003e function (9b51f73)\u003c/li\u003e\n\u003cli\u003eFixed old http import of HTTPStatus in _handshake.py (9b51f73)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esend_text()\u003c/code\u003e and \u003ccode\u003esend_bytes()\u003c/code\u003e to _app.py (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved typehint support (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e, 9b51f73, 8b73d00)\u003c/li\u003e\n\u003cli\u003eGeneral readability improvements, made all string concatenations use f-strings (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/909\"\u003e#909\u003c/a\u003e, 780584f, 3eabc6e)\u003c/li\u003e\n\u003cli\u003eApplied black formatting style to code (da7f286)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.4\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/952\"\u003e#952\u003c/a\u003e, add support for HTTP 307 and 308 redirect codes (69468ad)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix type hints issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/949\"\u003e#949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Python beta release 3.12 in CI (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/946\"\u003e#946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd maintainer email in setup.py (3d464fc)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for SSLKEYLOGFILE environment variable (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/943\"\u003e#943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for callable header arguments (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/932\"\u003e#932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChange handling of proxy environment variables, is_secure set to true now prevents http_proxy from getting used (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/929\"\u003e#929\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Dispatcher keyboard interrupt. Should solve reconnect loop with rel (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/924\"\u003e#924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix teardown issue when ping thread is not properly ended (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/918\"\u003e#918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix double ping wait time on first ping (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/912\"\u003e#912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor type hints improvements (eda6724, 54b3013)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.5.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logic to avoid error in the case where content-length header does not exist, bug introduced in 1.5.2 (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix wsdump.py script typing, bug introduced in 1.5.2 (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6861ee417b65c183a81671bc57cace26c9c7ee29\"\u003e\u003ccode\u003e6861ee4\u003c/code\u003e\u003c/a\u003e Use ipaddress module for no_proxy parsing (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/729bdb8fc063397d298261ed6f2288f272b7f6de\"\u003e\u003ccode\u003e729bdb8\u003c/code\u003e\u003c/a\u003e Coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/f22579afed961d89a306d0018f373922bf567d22\"\u003e\u003ccode\u003ef22579a\u003c/code\u003e\u003c/a\u003e Linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/9564030bed1112497bf1c879673870419365a064\"\u003e\u003ccode\u003e9564030\u003c/code\u003e\u003c/a\u003e Change echo URL in docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/c0fe0f7a18867599c9b62fc61f71036a8d5bdfcf\"\u003e\u003ccode\u003ec0fe0f7\u003c/code\u003e\u003c/a\u003e apply black formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/813d570fc95114aa48e8ddf8b767390a1a6985f7\"\u003e\u003ccode\u003e813d570\u003c/code\u003e\u003c/a\u003e Resolve all mypy errors, with AI assistance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6020f37e784b77f6627b38797595f038aa76f26e\"\u003e\u003ccode\u003e6020f37\u003c/code\u003e\u003c/a\u003e black formatting fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.7.0...v1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/mdshoebkhanking/shell-ai-os-controller/pull/7","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdshoebkhanking%2Fshell-ai-os-controller/issues/7","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/7/packages"},{"uuid":"4320011332","node_id":"PR_kwDOBFHcf87VLpyR","number":2544,"state":"closed","title":"Update websocket-client requirement from !=0.40.0,!=0.41.*,!=0.42.*,\u003e=0.32.0 to !=0.40.0,!=0.41.0.dev,!=0.42.0.dev,\u003e=1.9.0","user":"dependabot[bot]","labels":["cncf-cla: yes","size/XS","do-not-merge/release-note-label-needed","needs-kind","dependencies","python"],"assignees":[],"locked":false,"comments_count":7,"pull_request":true,"closed_at":"2026-05-07T21:40:47.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-24T02:02:55.000Z","updated_at":"2026-05-07T21:40:58.000Z","time_to_close":1193872,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"websocket-client","old_version":"!=0.40.0,!=0.41.*,!=0.42.*,\u003e=0.32.0","new_version":"!=0.40.0,!=0.41.0.dev,!=0.42.0.dev,\u003e=1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [websocket-client](https://github.com/websocket-client/websocket-client) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.8.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eon_reconnect\u003c/code\u003e parameter to WebSocketApp to handle callback ambiguity (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove handling of SSLEOFError and use reconnect bool (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor linting and docs CI build upgrades (981c00e, 75ba91a, bec2608)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.7.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRenamed \u003ccode\u003emask\u003c/code\u003e variable in ABNF to prevent name collision with \u003ccode\u003emask()\u003c/code\u003e function (9b51f73)\u003c/li\u003e\n\u003cli\u003eFixed old http import of HTTPStatus in _handshake.py (9b51f73)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esend_text()\u003c/code\u003e and \u003ccode\u003esend_bytes()\u003c/code\u003e to _app.py (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved typehint support (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e, 9b51f73, 8b73d00)\u003c/li\u003e\n\u003cli\u003eGeneral readability improvements, made all string concatenations use f-strings (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/909\"\u003e#909\u003c/a\u003e, 780584f, 3eabc6e)\u003c/li\u003e\n\u003cli\u003eApplied black formatting style to code (da7f286)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.4\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/952\"\u003e#952\u003c/a\u003e, add support for HTTP 307 and 308 redirect codes (69468ad)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix type hints issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/949\"\u003e#949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Python beta release 3.12 in CI (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/946\"\u003e#946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd maintainer email in setup.py (3d464fc)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for SSLKEYLOGFILE environment variable (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/943\"\u003e#943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for callable header arguments (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/932\"\u003e#932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChange handling of proxy environment variables, is_secure set to true now prevents http_proxy from getting used (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/929\"\u003e#929\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Dispatcher keyboard interrupt. Should solve reconnect loop with rel (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/924\"\u003e#924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix teardown issue when ping thread is not properly ended (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/918\"\u003e#918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix double ping wait time on first ping (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/912\"\u003e#912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor type hints improvements (eda6724, 54b3013)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.5.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logic to avoid error in the case where content-length header does not exist, bug introduced in 1.5.2 (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix wsdump.py script typing, bug introduced in 1.5.2 (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6861ee417b65c183a81671bc57cace26c9c7ee29\"\u003e\u003ccode\u003e6861ee4\u003c/code\u003e\u003c/a\u003e Use ipaddress module for no_proxy parsing (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/729bdb8fc063397d298261ed6f2288f272b7f6de\"\u003e\u003ccode\u003e729bdb8\u003c/code\u003e\u003c/a\u003e Coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/f22579afed961d89a306d0018f373922bf567d22\"\u003e\u003ccode\u003ef22579a\u003c/code\u003e\u003c/a\u003e Linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/9564030bed1112497bf1c879673870419365a064\"\u003e\u003ccode\u003e9564030\u003c/code\u003e\u003c/a\u003e Change echo URL in docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/c0fe0f7a18867599c9b62fc61f71036a8d5bdfcf\"\u003e\u003ccode\u003ec0fe0f7\u003c/code\u003e\u003c/a\u003e apply black formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/813d570fc95114aa48e8ddf8b767390a1a6985f7\"\u003e\u003ccode\u003e813d570\u003c/code\u003e\u003c/a\u003e Resolve all mypy errors, with AI assistance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6020f37e784b77f6627b38797595f038aa76f26e\"\u003e\u003ccode\u003e6020f37\u003c/code\u003e\u003c/a\u003e black formatting fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v0.32.0...v1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/kubernetes-client/python/pull/2544","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubernetes-client%2Fpython/issues/2544","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2544/packages"},{"uuid":"4292395519","node_id":"PR_kwDOOicRes7TyEpI","number":15,"state":"closed","title":"Bump the dev-dependencies group across 1 directory with 2 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-11T00:14:29.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-20T00:12:06.000Z","updated_at":"2026-05-11T00:14:31.000Z","time_to_close":1814543,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dev-dependencies","update_count":2,"packages":[{"name":"redis","old_version":"6.1.0","new_version":"7.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev-dependencies group with 2 updates in the / directory: [redis](https://github.com/redis/redis-py) and [websocket-client](https://github.com/websocket-client/websocket-client).\n\nUpdates `redis` from 6.1.0 to 7.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\u003e7.4.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix AttributeError in cluster metrics recording when connection is None or ClusterNode object instance is used to extract the connection info (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3999\"\u003e#3999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing security concern in \u003cstrong\u003erepr\u003c/strong\u003e methods for ConnectionPools - passwords might leak in plain text logs (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3998\"\u003e#3998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefactored connection count and SCH metric collection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4001\"\u003e#4001\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧪 Experimental Features\u003c/h2\u003e\n\u003cp\u003e-Refactored health check logic for MultiDBClient (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3994\"\u003e#3994\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eExpose basic Otel classes and functions to be importable through redis.observability to match the examples in the readthedocs (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3996\"\u003e#3996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.3.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eOpenTelemetry Native Metrics Support for asynchronous clients\u003c/strong\u003e\nAdded comprehensive OpenTelemetry metrics support for asynchronous clients following the \u003ca href=\"https://opentelemetry.io/docs/specs/semconv/database/database-metrics/\"\u003eOpenTelemetry Database Client Semantic Conventions\u003c/a\u003e.\nMetric groups include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommand metrics: Operation duration with retry tracking\u003c/li\u003e\n\u003cli\u003eConnection basic: Connection count and creation time\u003c/li\u003e\n\u003cli\u003eResiliency: Errors, handoffs, timeout relaxation\u003c/li\u003e\n\u003cli\u003eConnection advanced: Wait time and use time\u003c/li\u003e\n\u003cli\u003ePubsub metrics: Published and received messages\u003c/li\u003e\n\u003cli\u003eStream metrics: Processing duration and maintenance notifications\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded OTel instrumentation and metrics export for async client (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3977\"\u003e#3977\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[async] Adding access to cluster client's nodes_manager and set_response_callback in ClusterPipeline objects (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3989\"\u003e#3989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(connection): Ensure we have an initialized protocol in connection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3981\"\u003e#3981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use KeysT for blpop and brpop keys parameter type annotation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3987\"\u003e#3987\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3985\"\u003e#3985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: replace 3 bare except clauses with except Exception (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3980\"\u003e#3980\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/mitre88\"\u003e\u003ccode\u003e@​mitre88\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/turanalmammadov\"\u003e\u003ccode\u003e@​turanalmammadov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/haosenwang1018\"\u003e\u003ccode\u003e@​haosenwang1018\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Medno\"\u003e\u003ccode\u003e@​Medno\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.2.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/b72f24ad6a2226d46aed770e18094a86117d2217\"\u003e\u003ccode\u003eb72f24a\u003c/code\u003e\u003c/a\u003e Updating lib version to 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/0a4e0afe36504c3fb6df1e38683ea946febac9d3\"\u003e\u003ccode\u003e0a4e0af\u003c/code\u003e\u003c/a\u003e Refactored health check logic for MultiDBClient (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3994\"\u003e#3994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/15492c9156d3ab8dce05360977480510cf24fbf9\"\u003e\u003ccode\u003e15492c9\u003c/code\u003e\u003c/a\u003e Refactored connection count and SCH metric collection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4001\"\u003e#4001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/cd964ac96649df872a051835e9a52e05a5090607\"\u003e\u003ccode\u003ecd964ac\u003c/code\u003e\u003c/a\u003e Expose basic Otel classes and funtions to be importable through redis.observa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/46ab74d02ed9b15176f67edb817de83524f8145a\"\u003e\u003ccode\u003e46ab74d\u003c/code\u003e\u003c/a\u003e Fixing security concern in \u003cstrong\u003erepr\u003c/strong\u003e methods for ConnectionPools - passwords m...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/26482dbaae38abdb1966d9b1c803331e2dab2053\"\u003e\u003ccode\u003e26482db\u003c/code\u003e\u003c/a\u003e Fix AttributeError in cluster metrics recording when connection is None or Cl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/8ecbc7a728792ab9c71078cb330a64c225cb3351\"\u003e\u003ccode\u003e8ecbc7a\u003c/code\u003e\u003c/a\u003e Updating lib version to 7.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/11043df86ed5f892cde1f34f08f3450f13bb6339\"\u003e\u003ccode\u003e11043df\u003c/code\u003e\u003c/a\u003e typing: accept single-key input for blpop and brpop (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d9581250202123ebf68d299e8f2ea79fa9bd7210\"\u003e\u003ccode\u003ed958125\u003c/code\u003e\u003c/a\u003e fix: use KeysT for blpop and brpop keys parameter type annotation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3987\"\u003e#3987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/75bf91b8a28bfc3f8417e58d1b78bd112ffcf6de\"\u003e\u003ccode\u003e75bf91b\u003c/code\u003e\u003c/a\u003e [async] Adding access to cluster client's nodes_manager and set_response_call...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v6.1.0...v7.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `websocket-client` from 1.8.0 to 1.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e1.9.0\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6861ee417b65c183a81671bc57cace26c9c7ee29\"\u003e\u003ccode\u003e6861ee4\u003c/code\u003e\u003c/a\u003e Use ipaddress module for no_proxy parsing (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/729bdb8fc063397d298261ed6f2288f272b7f6de\"\u003e\u003ccode\u003e729bdb8\u003c/code\u003e\u003c/a\u003e Coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/f22579afed961d89a306d0018f373922bf567d22\"\u003e\u003ccode\u003ef22579a\u003c/code\u003e\u003c/a\u003e Linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/9564030bed1112497bf1c879673870419365a064\"\u003e\u003ccode\u003e9564030\u003c/code\u003e\u003c/a\u003e Change echo URL in docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/c0fe0f7a18867599c9b62fc61f71036a8d5bdfcf\"\u003e\u003ccode\u003ec0fe0f7\u003c/code\u003e\u003c/a\u003e apply black formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/813d570fc95114aa48e8ddf8b767390a1a6985f7\"\u003e\u003ccode\u003e813d570\u003c/code\u003e\u003c/a\u003e Resolve all mypy errors, with AI assistance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6020f37e784b77f6627b38797595f038aa76f26e\"\u003e\u003ccode\u003e6020f37\u003c/code\u003e\u003c/a\u003e black formatting fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.8.0...v1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\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/stan-dot/blue-histogramming/pull/15","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/stan-dot%2Fblue-histogramming/issues/15","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15/packages"},{"uuid":"4007288546","node_id":"PR_kwDOFhigTs7HIY01","number":494,"state":"closed","title":"Bump the core-scripts group across 1 directory with 21 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-03-10T18:28:13.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-01T14:07:17.000Z","updated_at":"2026-03-10T18:28:15.000Z","time_to_close":793256,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"core-scripts","update_count":21,"packages":[{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"certifi","old_version":"2025.8.3","new_version":"2026.2.25","repository_url":"https://github.com/certifi/python-certifi"},{"name":"chardet","old_version":"5.2.0","new_version":"6.0.0.post1","repository_url":"https://github.com/chardet/chardet"},{"name":"environs","old_version":"14.3.0","new_version":"14.6.0","repository_url":"https://github.com/sloria/environs"},{"name":"execnet","old_version":"2.1.1","new_version":"2.1.2","repository_url":"https://github.com/pytest-dev/execnet"},{"name":"gitpython","old_version":"3.1.45","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"parse","old_version":"1.20.2","new_version":"1.21.1","repository_url":"https://github.com/r1chardj0n3s/parse"},{"name":"parse-type","old_version":"0.6.4","new_version":"0.6.6","repository_url":"https://github.com/jenisys/parse_type"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.2","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pygithub","old_version":"2.7.0","new_version":"2.8.1","repository_url":"https://github.com/pygithub/pygithub"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pytest","old_version":"8.4.1","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"responses","old_version":"0.25.7","new_version":"0.26.0","repository_url":"https://github.com/getsentry/responses"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"behave","old_version":"1.3.0","new_version":"1.3.3","repository_url":"https://github.com/behave/behave"}],"path":null,"ecosystem":"pip"},"body":"Bumps the core-scripts group with 21 updates in the /scripts directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.8.3` | `2026.2.25` |\n| [chardet](https://github.com/chardet/chardet) | `5.2.0` | `6.0.0.post1` |\n| [environs](https://github.com/sloria/environs) | `14.3.0` | `14.6.0` |\n| [execnet](https://github.com/pytest-dev/execnet) | `2.1.1` | `2.1.2` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.45` | `3.1.46` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [parse](https://github.com/r1chardj0n3s/parse) | `1.20.2` | `1.21.1` |\n| [parse-type](https://github.com/jenisys/parse_type) | `0.6.4` | `0.6.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.7.0` | `2.8.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `9.0.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [responses](https://github.com/getsentry/responses) | `0.25.7` | `0.26.0` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [behave](https://github.com/behave/behave) | `1.3.0` | `1.3.3` |\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 `certifi` from 2025.8.3 to 2026.2.25\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/8571a4ba5205675107f9026d0008ad2d7a2778bf\"\u003e\u003ccode\u003e8571a4b\u003c/code\u003e\u003c/a\u003e 2026.02.25 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/395\"\u003e#395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6f7de00579d292af565bbb8a947643219794eb6d\"\u003e\u003ccode\u003e6f7de00\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 8.0.0 to 8.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/390\"\u003e#390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a1de59b15105cad768afed4f066b36171134f04a\"\u003e\u003ccode\u003ea1de59b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.1 to 6.0.2 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/7f5ade5d8da615fd366e8de6a668271251c45d34\"\u003e\u003ccode\u003e7f5ade5\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.1.0 to 6.2.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/392\"\u003e#392\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c64d9f3a8496c0195548697f2080e716af66dd6a\"\u003e\u003ccode\u003ec64d9f3\u003c/code\u003e\u003c/a\u003e 2026.01.04 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/389\"\u003e#389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4ac232f05a547071543d2fb069aa3c62b1dc79f3\"\u003e\u003ccode\u003e4ac232f\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/95ae4b20e8abb7fa708e751e346466d16b36211a\"\u003e\u003ccode\u003e95ae4b2\u003c/code\u003e\u003c/a\u003e Update CI workflow to use Ubuntu 24.04 and Python 3.14 stable (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/b72a7b1a40ae20755338d3132d8f880427b3b6fc\"\u003e\u003ccode\u003eb72a7b1\u003c/code\u003e\u003c/a\u003e Bump dessant/lock-threads from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ecc267216fbdcecb1b2aa2aa175152b773cc5ced\"\u003e\u003ccode\u003eecc2672\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6a897dbc1124b17f179ef225742fcda481ec96f3\"\u003e\u003ccode\u003e6a897db\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.11 to 8.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/383\"\u003e#383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.08.03...2026.02.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chardet` from 5.2.0 to 6.0.0.post1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chardet/chardet/releases\"\u003echardet's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.0.post1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed version number in chardet/version.py still being set to \u003ccode\u003e6.0.0dev0\u003c/code\u003e. Otherwise identical to \u003ca href=\"https://github.com/chardet/chardet/releases/6.0.0\"\u003e6.0.0\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.0.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eUnified single-byte charset detection\u003c/strong\u003e: Instead of only having trained language models for a handful of languages (Bulgarian, Greek, Hebrew, Hungarian, Russian, Thai, Turkish) and relying on special-case \u003ccode\u003eLatin1Prober\u003c/code\u003e and \u003ccode\u003eMacRomanProber\u003c/code\u003e heuristics for Western encodings, chardet now treats all single-byte charsets the same way: every encoding gets proper language-specific bigram models trained on CulturaX corpus data. This means chardet can now accurately detect both the encoding \u003cem\u003eand\u003c/em\u003e the language for all supported single-byte encodings.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e38 new languages\u003c/strong\u003e: Arabic, Belarusian, Breton, Croatian, Czech, Danish, Dutch, English, Esperanto, Estonian, Farsi, Finnish, French, German, Icelandic, Indonesian, Irish, Italian, Kazakh, Latvian, Lithuanian, Macedonian, Malay, Maltese, Norwegian, Polish, Portuguese, Romanian, Scottish Gaelic, Serbian, Slovak, Slovene, Spanish, Swedish, Tajik, Ukrainian, Vietnamese, and Welsh. Existing models for Bulgarian, Greek, Hebrew, Hungarian, Russian, Thai, and Turkish were also retrained with the new pipeline.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eEncodingEra\u003c/code\u003e filtering\u003c/strong\u003e: New \u003ccode\u003eencoding_era\u003c/code\u003e parameter to \u003ccode\u003edetect\u003c/code\u003e allows filtering by an \u003ccode\u003eEncodingEra\u003c/code\u003e flag enum (\u003ccode\u003eMODERN_WEB\u003c/code\u003e, \u003ccode\u003eLEGACY_ISO\u003c/code\u003e, \u003ccode\u003eLEGACY_MAC\u003c/code\u003e, \u003ccode\u003eLEGACY_REGIONAL\u003c/code\u003e, \u003ccode\u003eDOS\u003c/code\u003e, \u003ccode\u003eMAINFRAME\u003c/code\u003e, \u003ccode\u003eALL\u003c/code\u003e) allows callers to restrict detection to encodings from a specific era. \u003ccode\u003edetect()\u003c/code\u003e and \u003ccode\u003edetect_all()\u003c/code\u003e default to \u003ccode\u003eMODERN_WEB\u003c/code\u003e. The new \u003ccode\u003eMODERN_WEB\u003c/code\u003e default should drastically improve accuracy for users who are not working with legacy data. The tiers are:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eMODERN_WEB\u003c/code\u003e: UTF-8/16/32, Windows-125x, CP874, CJK multi-byte (widely used on the web)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLEGACY_ISO\u003c/code\u003e: ISO-8859-x, KOI8-R/U (legacy but well-known standards)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLEGACY_MAC\u003c/code\u003e: Mac-specific encodings (MacRoman, MacCyrillic, etc.)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLEGACY_REGIONAL\u003c/code\u003e: Uncommon regional/national encodings (KOI8-T, KZ1048, CP1006, etc.)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eDOS\u003c/code\u003e: DOS/OEM code pages (CP437, CP850, CP866, etc.)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMAINFRAME\u003c/code\u003e: EBCDIC variants (CP037, CP500, etc.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e--encoding-era\u003c/code\u003e CLI flag\u003c/strong\u003e: The \u003ccode\u003echardetect\u003c/code\u003e CLI now accepts \u003ccode\u003e-e\u003c/code\u003e/\u003ccode\u003e--encoding-era\u003c/code\u003e to control which encoding eras are considered during detection.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003emax_bytes\u003c/code\u003e and \u003ccode\u003echunk_size\u003c/code\u003e parameters\u003c/strong\u003e: \u003ccode\u003edetect()\u003c/code\u003e, \u003ccode\u003edetect_all()\u003c/code\u003e, and \u003ccode\u003eUniversalDetector\u003c/code\u003e now accept \u003ccode\u003emax_bytes\u003c/code\u003e (default 200KB) and \u003ccode\u003echunk_size\u003c/code\u003e (default 64KB) parameters for controlling how much data is examined. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/314\"\u003e#314\u003c/a\u003e, \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEncoding era preference tie-breaking\u003c/strong\u003e: When multiple encodings have very close confidence scores, the detector now prefers more modern/Unicode encodings over legacy ones.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCharset metadata registry\u003c/strong\u003e: New \u003ccode\u003echardet.metadata.charsets\u003c/code\u003e module provides structured metadata about all supported encodings, including their era classification and language filter.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eshould_rename_legacy\u003c/code\u003e now defaults intelligently\u003c/strong\u003e: When set to \u003ccode\u003eNone\u003c/code\u003e (the new default), legacy renaming is automatically enabled when \u003ccode\u003eencoding_era\u003c/code\u003e is \u003ccode\u003eMODERN_WEB\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDirect GB18030 support\u003c/strong\u003e: Replaced the redundant GB2312 prober with a proper GB18030 prober.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEBCDIC detection\u003c/strong\u003e: Added CP037 and CP500 EBCDIC model registrations for mainframe encoding detection.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBinary file detection\u003c/strong\u003e: Added basic binary file detection to abort analysis earlier on non-text files.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.12, 3.13, and 3.14 support\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/283\"\u003e#283\u003c/a\u003e, \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e; \u003ca href=\"https://redirect.github.com/chardet/chardet/issues/311\"\u003e#311\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGitHub Codespace support\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/312\"\u003e#312\u003c/a\u003e, \u003ca href=\"https://github.com/oxygen-dioxide\"\u003e\u003ccode\u003e@​oxygen-dioxide\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFix CP949 state machine\u003c/strong\u003e: Corrected the state machine for Korean CP949 encoding detection. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/268\"\u003e#268\u003c/a\u003e, \u003ca href=\"https://github.com/nenw\"\u003e\u003ccode\u003e@​nenw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix SJIS distribution analysis\u003c/strong\u003e: Fixed \u003ccode\u003eSJISDistributionAnalysis\u003c/code\u003e discarding valid second-byte range \u0026gt;= 0x80. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/315\"\u003e#315\u003c/a\u003e, \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix UTF-16/32 detection for non-ASCII-heavy text\u003c/strong\u003e: Improved detection of UTF-16/32 encoded CJK and other non-ASCII text by adding a \u003ccode\u003eMIN_RATIO\u003c/code\u003e threshold alongside the existing \u003ccode\u003eEXPECTED_RATIO\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix \u003ccode\u003eget_charset\u003c/code\u003e crash\u003c/strong\u003e: Resolved a crash when looking up unknown charset names.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix GB18030 \u003ccode\u003echar_len_table\u003c/code\u003e\u003c/strong\u003e: Corrected the character length table for GB18030 multi-byte sequences.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix UTF-8 state machine\u003c/strong\u003e: Updated to be more spec-compliant.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix \u003ccode\u003edetect_all()\u003c/code\u003e returning inactive probers\u003c/strong\u003e: Results from probers that determined \u0026quot;definitely not this encoding\u0026quot; are now excluded.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix early cutoff bug\u003c/strong\u003e: Resolved an issue where detection could terminate prematurely.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDefault UTF-8 fallback\u003c/strong\u003e: If UTF-8 has not been ruled out and nothing else is above the minimum threshold, UTF-8 is now returned as the default.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDropped Python 3.7, 3.8, and 3.9 support\u003c/strong\u003e: Now requires Python 3.10+. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/283\"\u003e#283\u003c/a\u003e, \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRemoved \u003ccode\u003eLatin1Prober\u003c/code\u003e and \u003ccode\u003eMacRomanProber\u003c/code\u003e\u003c/strong\u003e: These special-case probers have been replaced by the unified model-based approach described above. Latin-1, MacRoman, and all other single-byte encodings are now detected by \u003ccode\u003eSingleByteCharSetProber\u003c/code\u003e with trained language models, giving better accuracy and language identification.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRemoved EUC-TW support\u003c/strong\u003e: EUC-TW encoding detection has been removed as it is extremely rare in practice.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eLanguageFilter.NONE\u003c/code\u003e removed\u003c/strong\u003e: Use specific language filters or \u003ccode\u003eLanguageFilter.ALL\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnum types changed\u003c/strong\u003e: \u003ccode\u003eInputState\u003c/code\u003e, \u003ccode\u003eProbingState\u003c/code\u003e, \u003ccode\u003eMachineState\u003c/code\u003e, \u003ccode\u003eSequenceLikelihood\u003c/code\u003e, and \u003ccode\u003eCharacterCategory\u003c/code\u003e are now \u003ccode\u003eIntEnum\u003c/code\u003e (previously plain classes or \u003ccode\u003eEnum\u003c/code\u003e). \u003ccode\u003eLanguageFilter\u003c/code\u003e values changed from hardcoded hex to \u003ccode\u003eauto()\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003edetect()\u003c/code\u003e default behavior change\u003c/strong\u003e: \u003ccode\u003edetect()\u003c/code\u003e now defaults to \u003ccode\u003eencoding_era=EncodingEra.MODERN_WEB\u003c/code\u003e and \u003ccode\u003eshould_rename_legacy=None\u003c/code\u003e (auto-enabled for \u003ccode\u003eMODERN_WEB\u003c/code\u003e), whereas previously it defaulted to considering all encodings with no legacy renaming.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSwitched from Poetry/setuptools to uv + hatchling\u003c/strong\u003e: Build system modernized with \u003ccode\u003ehatch-vcs\u003c/code\u003e for version management.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/2fa72d84fdb9cb926eb1e7e40230a33b1dd81bb8\"\u003e\u003ccode\u003e2fa72d8\u003c/code\u003e\u003c/a\u003e Update version to 6.0.0.post1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/8a4636b1d4ef21d11cc8190f6ff271670b9d20ee\"\u003e\u003ccode\u003e8a4636b\u003c/code\u003e\u003c/a\u003e docs: modernize usage examples and reorganize table of contents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/20da71e7087159944e1ccfd586544a581744103a\"\u003e\u003ccode\u003e20da71e\u003c/code\u003e\u003c/a\u003e docs: fix copyright start year and remove first-person reference\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/b45ae91d9892c834a692e42d527670c6018d8301\"\u003e\u003ccode\u003eb45ae91\u003c/code\u003e\u003c/a\u003e docs: update copyright to 2015-2026 chardet contributors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/3f9910dbebfc2b268edba21eaf2175532c761c52\"\u003e\u003ccode\u003e3f9910d\u003c/code\u003e\u003c/a\u003e Add .readthedocs.yaml to fix RTD builds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/7ef7cd00f27e18c5a846c75b5b4aecd0ddd36186\"\u003e\u003ccode\u003e7ef7cd0\u003c/code\u003e\u003c/a\u003e Fix pyright type errors in chardetect.py and test.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/4025dfa2487e9a72d940ccf31ad933171aa178e5\"\u003e\u003ccode\u003e4025dfa\u003c/code\u003e\u003c/a\u003e Update documentation for 6.0.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/117082980035dadbe723b798cba267c537374747\"\u003e\u003ccode\u003e1170829\u003c/code\u003e\u003c/a\u003e Add LEGACY_REGIONAL encoding era and reclassify misplaced encodings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/19379ac0110df41a76835a89756ae23abc528bd3\"\u003e\u003ccode\u003e19379ac\u003c/code\u003e\u003c/a\u003e Add --encoding-era CLI flag and improve heuristic selection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/61308e2525dc43441ba07c6559d78bb9429ec31a\"\u003e\u003ccode\u003e61308e2\u003c/code\u003e\u003c/a\u003e Pre-release fixes: bump to 6.0.0, fix get_charset crash, cleanup\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chardet/chardet/compare/5.2.0...6.0.0.post1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `environs` from 14.3.0 to 14.6.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sloria/environs/blob/main/CHANGELOG.md\"\u003eenvirons's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e14.6.0 (2026-02-19)\u003c/h2\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix variable expansion with other characters (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/359\"\u003e#359\u003c/a\u003e).\nThanks \u003ca href=\"https://github.com/flymanzhao\"\u003eflymanzhao\u003c/a\u003e for reporting and \u003ca href=\"https://github.com/veeceey\"\u003eveeceey\u003c/a\u003e for the PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate lowest supported marshmallow version to 3.26.2 (\u003ca href=\"https://redirect.github.com/sloria/environs/pull/448\"\u003e#448\u003c/a\u003e).\nThanks \u003ca href=\"https://github.com/whyscream\"\u003ewhyscream\u003c/a\u003e for the PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e14.5.0 (2025-11-02)\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003estrip_whitespace\u003c/code\u003e param to \u003ccode\u003eFileAwareEnv\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/431\"\u003e#431\u003c/a\u003e).\nThanks \u003ca href=\"https://github.com/eandersons\"\u003eeandersons\u003c/a\u003e for the suggestion and PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9, which is EOL.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e14.4.0 (2025-10-29)\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for ISO 8601 durations to \u003ccode\u003eenv.timedelta\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/sloria/environs/pull/434\"\u003e#434\u003c/a\u003e).\nThanks \u003ca href=\"https://github.com/lucas-bremond\"\u003elucas-bremond\u003c/a\u003e for the suggestion and PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/947d7bdf40953a10422a94baee7621e72f6c57e3\"\u003e\u003ccode\u003e947d7bd\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/1a47a3658bf705e6270cb685efc38c22264c9110\"\u003e\u003ccode\u003e1a47a36\u003c/code\u003e\u003c/a\u003e fix: use fullmatch for expand_vars single-variable detection (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/450\"\u003e#450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/f678dabd2ebb32a22a90f439d8518f8c2ddcb60c\"\u003e\u003ccode\u003ef678dab\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/449\"\u003e#449\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/03c2e94c5fd4fbb93f8f1b45e8ab261cc52916a5\"\u003e\u003ccode\u003e03c2e94\u003c/code\u003e\u003c/a\u003e Update used marshmallow version according to CVE-2025-68480 (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/448\"\u003e#448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/3085b60655034b72d322fb40498d42b2f9e3d9bb\"\u003e\u003ccode\u003e3085b60\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/68d92c021f01e1e5c1e4edf63f1cfe71a2362f27\"\u003e\u003ccode\u003e68d92c0\u003c/code\u003e\u003c/a\u003e Add SECUCURITY.md (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/446\"\u003e#446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/a4f550996d7d75107fe6525ecf905ef6483ed3b3\"\u003e\u003ccode\u003ea4f5509\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/444\"\u003e#444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/cceab04b25cc676a0a023bda83ac094ac755142d\"\u003e\u003ccode\u003ecceab04\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/445\"\u003e#445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/6730f6c8a91e40ef607162730e64734b6b779d4a\"\u003e\u003ccode\u003e6730f6c\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/d04b64fed0193c7b8a0bb4bb3891c463ab60d988\"\u003e\u003ccode\u003ed04b64f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/443\"\u003e#443\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sloria/environs/compare/14.3.0...14.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `execnet` from 2.1.1 to 2.1.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/execnet/blob/master/CHANGELOG.rst\"\u003eexecnet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.1.2 (2025-11-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#376](https://github.com/pytest-dev/execnet/issues/376) \u0026lt;https://github.com/pytest-dev/execnet/issues/376\u0026gt;\u003c/code\u003e__ fix artifact building - pin minimal version of hatch.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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/execnet/commit/9313ece783ba2bd565eb1a2a8a71be441af56199\"\u003e\u003ccode\u003e9313ece\u003c/code\u003e\u003c/a\u003e Release 2.1.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/45a4d872775ae77366b62d6c93adb5c3ec51c966\"\u003e\u003ccode\u003e45a4d87\u003c/code\u003e\u003c/a\u003e Test on pypy-3.11 instead of pypy-3.8 (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/03462f5ad357cb28de83f28af6977e620b81c607\"\u003e\u003ccode\u003e03462f5\u003c/code\u003e\u003c/a\u003e Update hatchling version requirement in pyproject.toml (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/f05618084b3e524babe6d684e97443a16c4ecaf2\"\u003e\u003ccode\u003ef056180\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/a9d75e74b6913b9f4940de4d90e796b464ca88f9\"\u003e\u003ccode\u003ea9d75e7\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/9bfff13008d02cb5e0943ac57811b07ed7d81ffd\"\u003e\u003ccode\u003e9bfff13\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/caf108da5946aa4355eb853cb0f1fb5d6a359013\"\u003e\u003ccode\u003ecaf108d\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/d3074cd90921317e8d9510bf2fb41e48ed7b62fd\"\u003e\u003ccode\u003ed3074cd\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/370\"\u003e#370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/35aa8073a2ae51a38bb787784fd79d0bfba517cb\"\u003e\u003ccode\u003e35aa807\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/369\"\u003e#369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/d823f13ba81a1d14051dda54eb0931c73b7afdf7\"\u003e\u003ccode\u003ed823f13\u003c/code\u003e\u003c/a\u003e build(deps): bump hynek/build-and-inspect-python-package (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/execnet/compare/v2.1.1...v2.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gitpython` from 3.1.45 to 3.1.46\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gitpython-developers/GitPython/releases\"\u003egitpython's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.46\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare a new release by \u003ca href=\"https://github.com/Byron\"\u003e\u003ccode\u003e@​Byron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2063\"\u003egitpython-developers/GitPython#2063\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2067\"\u003egitpython-developers/GitPython#2067\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump git/ext/gitdb from \u003ccode\u003e335c0f6\u003c/code\u003e to \u003ccode\u003e39d7dbf\u003c/code\u003e by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2068\"\u003egitpython-developers/GitPython#2068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2070\"\u003egitpython-developers/GitPython#2070\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump git/ext/gitdb from \u003ccode\u003e39d7dbf\u003c/code\u003e to \u003ccode\u003ef8fdfec\u003c/code\u003e by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2071\"\u003egitpython-developers/GitPython#2071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003eSymbolicReference.reference\u003c/code\u003e property by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2074\"\u003egitpython-developers/GitPython#2074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: Add support for hasconfig git rule. by \u003ca href=\"https://github.com/bvanelli\"\u003e\u003ccode\u003e@​bvanelli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2075\"\u003egitpython-developers/GitPython#2075\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump github/codeql-action from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2076\"\u003egitpython-developers/GitPython#2076\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse actual return type in annotation for method submodule_update by \u003ca href=\"https://github.com/extrwi\"\u003e\u003ccode\u003e@​extrwi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2078\"\u003egitpython-developers/GitPython#2078\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump git/ext/gitdb from \u003ccode\u003ef8fdfec\u003c/code\u003e to \u003ccode\u003e65321a2\u003c/code\u003e by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2082\"\u003egitpython-developers/GitPython#2082\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreliminary support for index format v3 by \u003ca href=\"https://github.com/blahgeek\"\u003e\u003ccode\u003e@​blahgeek\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2081\"\u003egitpython-developers/GitPython#2081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2084\"\u003egitpython-developers/GitPython#2084\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePin \u003ccode\u003emypy==1.18.2\u003c/code\u003e by \u003ca href=\"https://github.com/George-Ogden\"\u003e\u003ccode\u003e@​George-Ogden\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2087\"\u003egitpython-developers/GitPython#2087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect \u003ccode\u003eos.Pathlike\u003c/code\u003e by \u003ca href=\"https://github.com/George-Ogden\"\u003e\u003ccode\u003e@​George-Ogden\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2086\"\u003egitpython-developers/GitPython#2086\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump git/ext/gitdb from \u003ccode\u003e65321a2\u003c/code\u003e to \u003ccode\u003e4c63ee6\u003c/code\u003e by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2093\"\u003egitpython-developers/GitPython#2093\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eJoin \u003ccode\u003ePathlike\u003c/code\u003e Object to Tree by \u003ca href=\"https://github.com/George-Ogden\"\u003e\u003ccode\u003e@​George-Ogden\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2094\"\u003egitpython-developers/GitPython#2094\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/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2074\"\u003egitpython-developers/GitPython#2074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bvanelli\"\u003e\u003ccode\u003e@​bvanelli\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2075\"\u003egitpython-developers/GitPython#2075\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/extrwi\"\u003e\u003ccode\u003e@​extrwi\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2078\"\u003egitpython-developers/GitPython#2078\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/blahgeek\"\u003e\u003ccode\u003e@​blahgeek\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2081\"\u003egitpython-developers/GitPython#2081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/George-Ogden\"\u003e\u003ccode\u003e@​George-Ogden\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2087\"\u003egitpython-developers/GitPython#2087\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/gitpython-developers/GitPython/compare/3.1.45...3.1.46\"\u003ehttps://github.com/gitpython-developers/GitPython/compare/3.1.45...3.1.46\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/9e24eb6b72c1851e46e09133b83b48f2059037d7\"\u003e\u003ccode\u003e9e24eb6\u003c/code\u003e\u003c/a\u003e Prepare next release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/b8bb60e544a1f389120b5540c6e1e7505427c279\"\u003e\u003ccode\u003eb8bb60e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/issues/2094\"\u003e#2094\u003c/a\u003e from George-Ogden/join-pathlike\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/c8b58c09904dabe67222165e4d3eecf4c8f07490\"\u003e\u003ccode\u003ec8b58c0\u003c/code\u003e\u003c/a\u003e Update test/test_tree.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/88e26141c738f6ac3beb1a433039611f88c2c30d\"\u003e\u003ccode\u003e88e2614\u003c/code\u003e\u003c/a\u003e Allow joining path to tree\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/9fa28ae108dc39cfb13282cd18d4251d0118dd52\"\u003e\u003ccode\u003e9fa28ae\u003c/code\u003e\u003c/a\u003e Add failing tests for joining paths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/6d66a02d14929976d9d8409773054e2e022eae0e\"\u003e\u003ccode\u003e6d66a02\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/issues/2093\"\u003e#2093\u003c/a\u003e from gitpython-developers/dependabot/submodules/git/...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/f738029ab05fe8356022248e68f9119c46b2f1e5\"\u003e\u003ccode\u003ef738029\u003c/code\u003e\u003c/a\u003e Bump git/ext/gitdb from \u003ccode\u003e65321a2\u003c/code\u003e to \u003ccode\u003e4c63ee6\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/eecc28d2e78d799105a2070acdb530ee5c81a9e8\"\u003e\u003ccode\u003eeecc28d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/issues/2086\"\u003e#2086\u003c/a\u003e from George-Ogden/true-pathlike\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/0cb55fb4adca4f2b26767e85ef8652ef13b834a1\"\u003e\u003ccode\u003e0cb55fb\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Add tests with non-ascii characters\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/171062655e24b6a6ca1a3beab3c7679278350ab5\"\u003e\u003ccode\u003e1710626\u003c/code\u003e\u003c/a\u003e Add tests with non-ascii characters\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gitpython-developers/GitPython/compare/3.1.45...3.1.46\"\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 `iniconfig` from 2.1.0 to 2.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd IniConfig.parse() with inline comment stripping and Unicode whitespace handling by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/70\"\u003epytest-dev/iniconfig#70\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.2.0\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.3.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eadd IniConfig.parse() classmethod with strip_inline_comments parameter (fixes \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/55\"\u003e#55\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eby default (strip_inline_comments=True), inline comments are properly stripped from values\u003c/li\u003e\n\u003cli\u003eset strip_inline_comments=False to preserve old behavior if needed\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eIniConfig() constructor maintains backward compatibility (does not strip inline comments)\u003c/li\u003e\n\u003cli\u003eusers should migrate to IniConfig.parse() for correct comment handling\u003c/li\u003e\n\u003cli\u003eadd strip_section_whitespace parameter to IniConfig.parse() (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eopt-in parameter to strip Unicode whitespace from section names\u003c/li\u003e\n\u003cli\u003ewhen True, strips Unicode whitespace (U+00A0, U+2000, U+3000, etc.) from section names\u003c/li\u003e\n\u003cli\u003ewhen False (default), preserves existing behavior for backward compatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eclarify Unicode whitespace handling (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003esince iniconfig 2.0.0 (Python 3 only), all strings are Unicode by default\u003c/li\u003e\n\u003cli\u003ePython 3's str.strip() has handled Unicode whitespace since Python 3.0 (2008)\u003c/li\u003e\n\u003cli\u003einiconfig automatically benefits from this in all supported versions (Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003ekey names and values have Unicode whitespace properly stripped using Python's built-in methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.2.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.8 and 3.9 support (now requires Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 classifier\u003c/li\u003e\n\u003cli\u003emigrate from hatchling to setuptools 77 with setuptools_scm\u003c/li\u003e\n\u003cli\u003eadopt PEP 639 license specifiers and PEP 740 build attestations\u003c/li\u003e\n\u003cli\u003emigrate from black + pyupgrade to ruff\u003c/li\u003e\n\u003cli\u003emigrate CI to uv and unified test workflow\u003c/li\u003e\n\u003cli\u003eautomate GitHub releases and PyPI publishing via Trusted Publishing\u003c/li\u003e\n\u003cli\u003einclude tests in sdist\u003c/li\u003e\n\u003cli\u003emodernize code for Python 3.10+ (remove \u003cstrong\u003efuture\u003c/strong\u003e annotations, TYPE_CHECKING guards)\u003c/li\u003e\n\u003cli\u003erename _ParsedLine to ParsedLine\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/7faed13ae50bad7c5da3f5782f254a8a7736bb84\"\u003e\u003ccode\u003e7faed13\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/70\"\u003e#70\u003c/a\u003e from RonnyPfannschmidt/comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/58c08691bbb86aee8efbf73e37293dd6d65b68b4\"\u003e\u003ccode\u003e58c0869\u003c/code\u003e\u003c/a\u003e Refactor: Simplify IniConfig constructor and parse() method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/6d0af4529e4375e49dc871aa3d5ce17fe1791afe\"\u003e\u003ccode\u003e6d0af45\u003c/code\u003e\u003c/a\u003e Add strip_section_whitespace parameter to address issue \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/e2d89f5283cbeb4b4ca55fe88b1c353c343b4972\"\u003e\u003ccode\u003ee2d89f5\u003c/code\u003e\u003c/a\u003e Add IniConfig.parse() classmethod to fix inline comment handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/57b7ed9c7a5950f9c57b2cfbe641ff4cc04baf1c\"\u003e\u003ccode\u003e57b7ed9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/66\"\u003e#66\u003c/a\u003e from killiandesse/pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27ac49f56794db397ecb017414663a81e701dfdc\"\u003e\u003ccode\u003e27ac49f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/69\"\u003e#69\u003c/a\u003e from RonnyPfannschmidt/limit-attestation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/3402322097aa7b6eba9a68c96faddc780e04b085\"\u003e\u003ccode\u003e3402322\u003c/code\u003e\u003c/a\u003e Disable build attestations for PRs from forks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27e6a7b4a7b24f7f8a5e5492b071ab16eff36f95\"\u003e\u003ccode\u003e27e6a7b\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/65228817674f099d48cab0f0974000ea0e3031c1\"\u003e\u003ccode\u003e6522881\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/68\"\u003e#68\u003c/a\u003e from pytest-dev/fix-build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/8b2bccb3b6be37c9bf70a4fbe0cda4c92c70355f\"\u003e\u003ccode\u003e8b2bccb\u003c/code\u003e\u003c/a\u003e Update CHANGELOG and automate releases\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.1.0...v2.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markupsafe` from 3.0.2 to 3.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/markupsafe/releases\"\u003emarkupsafe's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.3\u003c/h2\u003e\n\u003cp\u003eThis is the MarkupSafe 3.0.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/MarkupSafe/3.0.3/\"\u003ehttps://pypi.org/project/MarkupSafe/3.0.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://markupsafe.palletsprojects.com/page/changes/#version-3-0-3\"\u003ehttps://markupsafe.palletsprojects.com/page/changes/#version-3-0-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/markupsafe/milestone/15?closed=1\"\u003ehttps://github.com/pallets/markupsafe/milestone/15?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e__version__\u003c/code\u003e raises \u003ccode\u003eDeprecationWarning\u003c/code\u003e instead of \u003ccode\u003eUserWarning\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/487\"\u003e#487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdopt multi-phase initialization PEP 489 for the C extension. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/494\"\u003e#494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild Windows ARM64 wheels. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/485\"\u003e#485\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild Python 3.14 wheels. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/503\"\u003e#503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild riscv64 wheels. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/505\"\u003e#505\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/markupsafe/blob/main/CHANGES.rst\"\u003emarkupsafe's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.0.3\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-27\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e__version__\u003c/code\u003e raises \u003ccode\u003eDeprecationWarning\u003c/code\u003e instead of \u003ccode\u003eUserWarning\u003c/code\u003e.\n:issue:\u003ccode\u003e487\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdopt multi-phase initialisation (:pep:\u003ccode\u003e489\u003c/code\u003e) for the C extension.\n:issue:\u003ccode\u003e494\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild Windows ARM64 wheels. :issue:\u003ccode\u003e485\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild Python 3.14 wheels. :issue:\u003ccode\u003e503\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild riscv64 wheels. :issue:\u003ccode\u003e505\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/297fc8e356e6836a62087949245d09a28e9f1b13\"\u003e\u003ccode\u003e297fc8e\u003c/code\u003e\u003c/a\u003e release version 3.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/7e4e6ce249107c5f27fa6fe890e29da7a8dc8f0c\"\u003e\u003ccode\u003e7e4e6ce\u003c/code\u003e\u003c/a\u003e Free-threading: run with pytest-run-paralell (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/507\"\u003e#507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/6100b9c0d466495a08d55b33cb172d7b5d8e9aa1\"\u003e\u003ccode\u003e6100b9c\u003c/code\u003e\u003c/a\u003e enable riscv64 wheels (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/506\"\u003e#506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/c9d5ecfc7eec6f611b19cdc8e1cde1aaa65cb8eb\"\u003e\u003ccode\u003ec9d5ecf\u003c/code\u003e\u003c/a\u003e enable riscv64 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/2f9b33753052e7c6df1464a7c900787d04ae9daf\"\u003e\u003ccode\u003e2f9b337\u003c/code\u003e\u003c/a\u003e tox for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/78d951a9549dee9fc901c55fc79a74a5f01e96fc\"\u003e\u003ccode\u003e78d951a\u003c/code\u003e\u003c/a\u003e update dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/bb6744e392e79611b110c5ba022238eb1b855cc2\"\u003e\u003ccode\u003ebb6744e\u003c/code\u003e\u003c/a\u003e add entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/65c4134ab16a3faccbcac2cba90da0db2b799542\"\u003e\u003ccode\u003e65c4134\u003c/code\u003e\u003c/a\u003e upgrade cibuildwheel, add \u003ccode\u003ecp314\u003c/code\u003e wheels and test on CPython 3.14 (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/504\"\u003e#504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/3a9bd88b84c9edba8b922bb12b84a59feed98788\"\u003e\u003ccode\u003e3a9bd88\u003c/code\u003e\u003c/a\u003e add cp314 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/aafe44d87bd7974bc82af8c4010dea9938441edf\"\u003e\u003ccode\u003eaafe44d\u003c/code\u003e\u003c/a\u003e remove slsa provenance (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/501\"\u003e#501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/markupsafe/compare/3.0.2...3.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `packaging` from 25.0 to 26.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/releases\"\u003epackaging's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.0\u003c/h2\u003e\n\u003cp\u003eRead about the performance improvements here: \u003ca href=\"https://iscinumpy.dev/post/packaging-faster\"\u003ehttps://iscinumpy.dev/post/packaging-faster\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePEP 751: support pylock by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/900\"\u003epypa/packaging#900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePEP 794: import name metadata by \u003ca href=\"https://github.com/brettcannon\"\u003e\u003ccode\u003e@​brettcannon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/948\"\u003epypa/packaging#948\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport writing metadata by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/846\"\u003epypa/packaging#846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e__replace__\u003c/code\u003e for \u003ccode\u003eVersion\u003c/code\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1003\"\u003epypa/packaging#1003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport positional pattern matching for \u003ccode\u003eVersion\u003c/code\u003e and \u003ccode\u003eSpecifier\u003c/code\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1004\"\u003epypa/packaging#1004\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePEP 440 handling of prereleases for \u003ccode\u003eSpecifier.contains\u003c/code\u003e, \u003ccode\u003eSpecifierSet.contains\u003c/code\u003e, and \u003ccode\u003eSpecifierSet.filter\u003c/code\u003e by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/897\"\u003epypa/packaging#897\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle PEP 440 edge case in \u003ccode\u003eSpecifierSet.filter\u003c/code\u003e by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/942\"\u003epypa/packaging#942\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust arbitrary equality intersection preservation in \u003ccode\u003eSpecifierSet\u003c/code\u003e by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/951\"\u003epypa/packaging#951\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn \u003ccode\u003eFalse\u003c/code\u003e instead of raising for \u003ccode\u003e.contains\u003c/code\u003e with invalid version by \u003ca href=\"https://github.com/Liam-DeVoe\"\u003e\u003ccode\u003e@​Liam-DeVoe\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/932\"\u003epypa/packaging#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport arbitrary equality on arbitrary strings for \u003ccode\u003eSpecifier\u003c/code\u003e and \u003ccode\u003eSpecifierSet\u003c/code\u003e's \u003ccode\u003efilter\u003c/code\u003e and \u003ccode\u003econtains\u003c/code\u003e method. by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/954\"\u003epypa/packaging#954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly try to parse as \u003ccode\u003eVersion\u003c/code\u003e on certain marker keys, return \u003ccode\u003eFalse\u003c/code\u003e on unequal ordered comparsions by \u003ca href=\"https://github.com/JP-Ellis\"\u003e\u003ccode\u003e@​JP-Ellis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/939\"\u003epypa/packaging#939\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003e_hash\u003c/code\u003e when unpickling \u003ccode\u003eTag()\u003c/code\u003e by \u003ca href=\"https://github.com/dholth\"\u003e\u003ccode\u003e@​dholth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/860\"\u003epypa/packaging#860\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrect comment and simplify implicit prerelease handling in \u003ccode\u003eSpecifier.prereleases\u003c/code\u003e by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/896\"\u003epypa/packaging#896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse explicit \u003ccode\u003e_GLibCVersion\u003c/code\u003e \u003ccode\u003eNamedTuple\u003c/code\u003e in \u003ccode\u003e_manylinux\u003c/code\u003e by \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/868\"\u003epypa/packaging#868\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDetect invalid license expressions containing \u003ccode\u003e()\u003c/code\u003e by \u003ca href=\"https://github.com/bwoodsend\"\u003e\u003ccode\u003e@​bwoodsend\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/879\"\u003epypa/packaging#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrect regex for metadata \u003ccode\u003e'name'\u003c/code\u003e format by \u003ca href=\"https://github.com/di\"\u003e\u003ccode\u003e@​di\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/925\"\u003epypa/packaging#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove the message around expecting a semicolon by \u003ca href=\"https://github.com/pradyunsg\"\u003e\u003ccode\u003e@​pradyunsg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/833\"\u003epypa/packaging#833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport nested parens in license expressions by \u003ca href=\"https://github.com/Liam-DeVoe\"\u003e\u003ccode\u003e@​Liam-DeVoe\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/931\"\u003epypa/packaging#931\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd space before at symbol in \u003ccode\u003eRequirements\u003c/code\u003e string by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/953\"\u003epypa/packaging#953\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eA root logger use found by ruff LOG, use \u003ccode\u003epackaging\u003c/code\u003e logger instead by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/965\"\u003epypa/packaging#965\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBetter support for subclassing \u003ccode\u003eMarker\u003c/code\u003e and \u003ccode\u003eRequirement\u003c/code\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1022\"\u003epypa/packaging#1022\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNormalize all extras, not just if it comes first by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1024\"\u003epypa/packaging#1024\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't produce a broken repr if \u003ccode\u003eMarker\u003c/code\u003e fails to construct by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1033\"\u003epypa/packaging#1033\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePerformance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid recompiling regexes in the tokenizer for a 3x speedup by \u003ca href=\"https://github.com/hauntsaninja\"\u003e\u003ccode\u003e@​hauntsaninja\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1019\"\u003epypa/packaging#1019\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove performance in \u003ccode\u003e_manylinux.py\u003c/code\u003e by \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/869\"\u003epypa/packaging#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMinor cleanups to \u003ccode\u003eVersion\u003c/code\u003e by \u003ca href=\"https://github.com/bearomorphism\"\u003e\u003ccode\u003e@​bearomorphism\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/913\"\u003epypa/packaging#913\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip redundant creation of \u003ccode\u003eVersion\u003c/code\u003es in specifier comparison by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/986\"\u003epypa/packaging#986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache \u003ccode\u003eSpecifier\u003c/code\u003e's Version by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/985\"\u003epypa/packaging#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e a little faster by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/987\"\u003epypa/packaging#987\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMinor \u003ccode\u003eVersion\u003c/code\u003e regex cleanup by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/990\"\u003epypa/packaging#990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFaster regex on Python 3.11.5+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/988\"\u003epypa/packaging#988\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1055\"\u003epypa/packaging#1055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLazily calculate \u003ccode\u003e_key\u003c/code\u003e in \u003ccode\u003eVersion\u003c/code\u003e by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/989\"\u003epypa/packaging#989\u003c/a\u003e and regression for \u003ccode\u003epackaging_legacy\u003c/code\u003e fixed by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1048\"\u003epypa/packaging#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFaster \u003ccode\u003ecanonicalize_version\u003c/code\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/993\"\u003epypa/packaging#993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003efullmatch\u003c/code\u003e in a couple more places by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/992\"\u003epypa/packaging#992\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/blob/main/CHANGELOG.rst\"\u003epackaging's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e26.0 - 2026-01-20\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nFeatures:\n\u003cul\u003e\n\u003cli\u003ePEP 751: support pylock (:pull:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 794: import name metadata (:pull:\u003ccode\u003e948\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport for writing metadata to a file (:pull:\u003ccode\u003e846\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e__replace__\u003c/code\u003e on Version (:pull:\u003ccode\u003e1003\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport positional pattern matching for \u003ccode\u003eVersion\u003c/code\u003e and \u003ccode\u003eSpecifierSet\u003c/code\u003e (:pull:\u003ccode\u003e1004\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePEP 440 handling of prereleases for \u003ccode\u003eSpecifier.contains\u003c/code\u003e, \u003ccode\u003eSpecifierSet.contains\u003c/code\u003e, and \u003ccode\u003eSpecifierSet.filter\u003c/code\u003e (:pull:\u003ccode\u003e897\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eHandle PEP 440 edge case in \u003ccode\u003eSpecifierSet.filter\u003c/code\u003e (:pull:\u003ccode\u003e942\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdjust arbitrary equality intersection preservation in \u003ccode\u003eSpecifierSet\u003c/code\u003e (:pull:\u003ccode\u003e951\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eReturn \u003ccode\u003eFalse\u003c/code\u003e instead of raising for \u003ccode\u003e.contains\u003c/code\u003e with invalid version (:pull:\u003ccode\u003e932\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport arbitrary equality on arbitrary strings for \u003ccode\u003eSpecifier\u003c/code\u003e and \u003ccode\u003eSpecifierSet\u003c/code\u003e's \u003ccode\u003efilter\u003c/code\u003e and \u003ccode\u003econtains\u003c/code\u003e method. (:pull:\u003ccode\u003e954\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOnly try to parse as \u003ccode\u003eVersion\u003c/code\u003e on certain marker keys, return \u003ccode\u003eFalse\u003c/code\u003e on unequal ordered comparisons (:pull:\u003ccode\u003e939\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003e_hash\u003c/code\u003e when unpickling \u003ccode\u003eTag()\u003c/code\u003e (:pull:\u003ccode\u003e860\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eCorrect comment and simplify implicit prerelease handling in \u003ccode\u003eSpecifier.prereleases\u003c/code\u003e (:pull:\u003ccode\u003e896\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse explicit \u003ccode\u003e_GLibCVersion\u003c/code\u003e \u003ccode\u003eNamedTuple\u003c/code\u003e in \u003ccode\u003e_manylinux\u003c/code\u003e (:pull:\u003ccode\u003e868\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDetect invalid license expressions containing \u003ccode\u003e()\u003c/code\u003e (:pull:\u003ccode\u003e879\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eCorrect regex for metadata \u003ccode\u003e'name'\u003c/code\u003e format (:pull:\u003ccode\u003e925\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eImprove the message around expecting a semicolon (:pull:\u003ccode\u003e833\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport nested parens in license expressions (:pull:\u003ccode\u003e931\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd space before at symbol in \u003ccode\u003eRequirements\u003c/code\u003e string (:pull:\u003ccode\u003e953\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eA root logger use found, use a \u003ccode\u003epackaging\u003c/code\u003e logger instead (:pull:\u003ccode\u003e965\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eBetter support for subclassing \u003ccode\u003eMarker\u003c/code\u003e and \u003ccode\u003eRequirement\u003c/code\u003e (:pull:\u003ccode\u003e1022\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize all extras, not just if it comes first (:pull:\u003ccode\u003e1024\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't produce a broken repr if \u003ccode\u003eMarker\u003c/code\u003e fails to construct (:pull:\u003ccode\u003e1033\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePerformance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid recompiling regexes in the tokenizer for a 3x speedup (:pull:\u003ccode\u003e1019\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance in \u003ccode\u003e_manylinux.py\u003c/code\u003e (:pull:\u003ccode\u003e869\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMinor cleanups to \u003ccode\u003eVersion\u003c/code\u003e (:pull:\u003ccode\u003e913\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSkip redundant creation of \u003ccode\u003eVersion\u003c/code\u003e's in specifier comparison (:pull:\u003ccode\u003e986\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eCache the \u003ccode\u003eSpecifier\u003c/code\u003e's \u003ccode\u003eVersion\u003c/code\u003e (:pull:\u003ccode\u003e985\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e a little faster (:pull:\u003ccode\u003e987\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMinor \u003ccode\u003eVersion\u003c/code\u003e regex cleanup (:pull:\u003ccode\u003e990\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFaster regex on Python 3.11.5+ for \u003ccode\u003eVersion\u003c/code\u003e (:pull:\u003ccode\u003e988\u003c/code\u003e, :pull:\u003ccode\u003e1055\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eLazily calculate \u003ccode\u003e_key\u003c/code\u003e in \u003ccode\u003eVersion\u003c/code\u003e (:pull:\u003ccode\u003e989\u003c/code\u003e, :pull:\u003ccode\u003e1048\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFaster \u003ccode\u003ecanonicalize_version\u003c/code\u003e (:pull:\u003ccode\u003e993\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ere.fullmatch\u003c/code\u003e in a couple more places (:pull:\u003ccode\u003e992\u003c/code\u003e, :pull:\u003ccode\u003e1029\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003emap\u003c/code\u003e instead of generator (:pull:\u003ccode\u003e996\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecate \u003ccode\u003e._version\u003c/code\u003e (\u003ccode\u003e_Version\u003c/code\u003e, a \u003ccode\u003eNamedTuple\u003c/code\u003e) (:pull:\u003ccode\u003e995\u003c/code\u003e, :pull:\u003ccode\u003e1062\u003c/code\u003e)\u003cbr /\u003e\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/3b77a26f5a27473ad3b08194d773f325d018a2d0\"\u003e\u003ccode\u003e3b77a26\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/31371cce593d2bde0dd8c436ecfb7d53cb91cfb6\"\u003e\u003ccode\u003e31371cc\u003c/code\u003e\u003c/a\u003e docs: prepare for 26.0 final (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1063\"\u003e#1063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/9627a8821f09e4c55cd6e9daadb617b67c4741c2\"\u003e\u003ccode\u003e9627a88\u003c/code\u003e\u003c/a\u003e perf: dual replace (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1064\"\u003e#1064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/d5398b8bc19f3fad7b035ceb83023caf06d6e2da\"\u003e\u003ccode\u003ed5398b8\u003c/code\u003e\u003c/a\u003e fix: restore ._version as a compat shim (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1062\"\u003e#1062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/3a7b600a126d237b2ad3cd7e25d2cb5c176276af\"\u003e\u003ccode\u003e3a7b600\u003c/code\u003e\u003c/a\u003e Bump for development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/d4eefdccf992e963c48011875301d93df6a7f2cc\"\u003e\u003ccode\u003ed4eefdc\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/46189124fb43d8989d370902c80ab156eb83a45d\"\u003e\u003ccode\u003e4618912\u003c/code\u003e\u003c/a\u003e docs: prepare for 26.0rc3 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1060\"\u003e#1060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/0cf1b41b4b321ae08cad7d3e49cfaff5578fe813\"\u003e\u003ccode\u003e0cf1b41\u003c/code\u003e\u003c/a\u003e ci: test on first public release of CPythons (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/716beb1c0a5d7a398bf57fbd80bc2501811e616b\"\u003e\u003ccode\u003e716beb1\u003c/code\u003e\u003c/a\u003e perf:  10% faster stripping zeros (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1058\"\u003e#1058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/350a2306700b738f487f251efa278f532b263dee\"\u003e\u003ccode\u003e350a230\u003c/code\u003e\u003c/a\u003e fix: support CPython 3.11.0-3.11.4 and older PyPy3.11 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/packaging/compare/25.0...26.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `parse` from 1.20.2 to 1.21.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/r1chardj0n3s/parse/releases\"\u003eparse's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.21.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix microsecond precision loss in timestamp parsing by \u003ca href=\"https://github.com/karthiksai109\"\u003e\u003ccode\u003e@​karthiksai109\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/223\"\u003er1chardj0n3s/parse#223\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/karthiksai109\"\u003e\u003ccode\u003e@​karthiksai109\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/223\"\u003er1chardj0n3s/parse#223\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/r1chardj0n3s/parse/compare/1.21.0...1.21.1\"\u003ehttps://github.com/r1chardj0n3s/parse/compare/1.21.0...1.21.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.21.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eallow triggering CI manually by \u003ca href=\"https://github.com/wimglenn\"\u003e\u003ccode\u003e@​wimglenn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/195\"\u003er1chardj0n3s/parse#195\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eActually raise exception by \u003ca href=\"https://github.com/shenanigansd\"\u003e\u003ccode\u003e@​shenanigansd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/196\"\u003er1chardj0n3s/parse#196\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ereadme: Clarify 'd' type by \u003ca href=\"https://github.com/dreua\"\u003e\u003ccode\u003e@​dreua\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/198\"\u003er1chardj0n3s/parse#198\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the actions-infrastructure group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/219\"\u003er1chardj0n3s/parse#219\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow grouping char (,_) in decimal format string by \u003ca href=\"https://github.com/moi90\"\u003e\u003ccode\u003e@​moi90\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/221\"\u003er1chardj0n3s/parse#221\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/shenanigansd\"\u003e\u003ccode\u003e@​shenanigansd\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/196\"\u003er1chardj0n3s/parse#196\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dreua\"\u003e\u003ccode\u003e@​dreua\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/198\"\u003er1chardj0n3s/parse#198\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/219\"\u003er1chardj0n3s/parse#219\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/moi90\"\u003e\u003ccode\u003e@​moi90\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/221\"\u003er1chardj0n3s/parse#221\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/r1chardj0n3s/parse/compare/1.20.2...1.21.0\"\u003ehttps://github.com/r1chardj0n3s/parse/compare/1.20.2...1.21.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/9a2ae8d2c77e845415e5ad6952e7b2dba09a56d2\"\u003e\u003ccode\u003e9a2ae8d\u003c/code\u003e\u003c/a\u003e bump version for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/cd6bf203ab0353c038a0556fbbe0851ff56f539d\"\u003e\u003ccode\u003ecd6bf20\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/issues/223\"\u003e#223\u003c/a\u003e from karthiksai109/fix-microsecond-precision\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/ba6803d57179a4b026c8ed51d970156653153b62\"\u003e\u003ccode\u003eba6803d\u003c/code\u003e\u003c/a\u003e Fix microsecond precision loss in timestamp parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/738447715c76f8ebc460b33320307faccafbc599\"\u003e\u003ccode\u003e7384477\u003c/code\u003e\u003c/a\u003e release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/35b9ffb355f94bc4cb781fbb3b0adff2232a5602\"\u003e\u003ccode\u003e35b9ffb\u003c/code\u003e\u003c/a\u003e Allow grouping char (,_) in decimal format string (\u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/d50f48c4dcabbeaf738061c186314a1433572ae0\"\u003e\u003ccode\u003ed50f48c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/issues/219\"\u003e#219\u003c/a\u003e from r1chardj0n3s/dependabot/github_actions/actions-i...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/96cdf95c01a8e4d9659bcc81dfc20ada2f788276\"\u003e\u003ccode\u003e96cdf95\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the actions-infrastructure group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/d5bd49a6232f3a0ad074e30ec1e02959cdb3e70c\"\u003e\u003ccode\u003ed5bd49a\u003c/code\u003e\u003c/a\u003e restore 3.7 and 2.7 test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/5bfb45d9f30890e85a5c440e14fc25a930a3faaf\"\u003e\u003ccode\u003e5bfb45d\u003c/code\u003e\u003c/a\u003e Update README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/a497a407397f23ef527879a136e7fef2344180db\"\u003e\u003ccode\u003ea497a40\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/issues/198\"\u003e#198\u003c/a\u003e from dreua/patch-2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/r1chardj0n3s/parse/compare/1.20.2...1.21.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `parse-type` from 0.6.4 to 0.6.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jenisys/parse_type/releases\"\u003eparse-type's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.6\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDisable setuptools-scm: Too many side-effects\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.6.5\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eREADME: Remove \u0026quot;downloads\u0026quot; badge -- too noisy\u003c/li\u003e\n\u003cli\u003esetup.py/pyproject.toml: Update, correct and tweaks\u003c/li\u003e\n\u003cli\u003etests: Fix file permissions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003edevelop:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Use actions/checkout@v5 (was: v4)\u003c/li\u003e\n\u003cli\u003eCI: Use astral-sh/setup-uv action\u003c/li\u003e\n\u003cli\u003eCI: Add python 3.14.0-rc.1 (as experimental python version).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/5c4126ae3973b5c0a4107cd8b29f2b74993be330\"\u003e\u003ccode\u003e5c4126a\u003c/code\u003e\u003c/a\u003e setup.py/pyproject.toml: Disable setuptools-scm\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/cb115df7fdfad2dfb98bff950f23a6aebd575e96\"\u003e\u003ccode\u003ecb115df\u003c/code\u003e\u003c/a\u003e invoke:\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/562679afba6859a9fd89487abb88255de614004c\"\u003e\u003ccode\u003e562679a\u003c/code\u003e\u003c/a\u003e CI: Add python 3.14.0-rc.1 (as experimental python version).\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/4d408d8a6dec4ec190e8497721a1b57db581962b\"\u003e\u003ccode\u003e4d408d8\u003c/code\u003e\u003c/a\u003e setup.py/pyproject.toml: Update, correct and tweaks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/14c409e3c98c6c02ea143537ef6f54693513014f\"\u003e\u003ccode\u003e14c409e\u003c/code\u003e\u003c/a\u003e CI: Use actions/checkout@v5 (was: v4)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/4fa182eef7156a32da5ec3ffda6c7c4e66d28482\"\u003e\u003ccode\u003e4fa182e\u003c/code\u003e\u003c/a\u003e develop: Use uv w/ direnv to setup workspace and venv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/4e4cb772a88caab981eac3fda7fed9e67821beb5\"\u003e\u003ccode\u003e4e4cb77\u003c/code\u003e\u003c/a\u003e tests: Fix file permissions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/35096a3f1c8f1d02b2809a69a68f84fc8d39904b\"\u003e\u003ccode\u003e35096a3\u003c/code\u003e\u003c/a\u003e CI: Use astral-sh/setup-uv action\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/fdae4602ee39e949258146909535d337b4b0fb3f\"\u003e\u003ccode\u003efdae460\u003c/code\u003e\u003c/a\u003e CI: Add python 3.13.0-rc.3 (currently a pre-release).\u003c/li\u003e\n\u003cli\u003eSee ful...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-helm-charts/development/pull/494","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-helm-charts%2Fdevelopment/issues/494","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/494/packages"},{"uuid":"3906028918","node_id":"PR_kwDOQf0FPs7B9XSO","number":27,"state":"closed","title":"chore(deps): bump the python-minor-patch group across 1 directory with 21 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-02-16T09:53:35.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-06T10:21:39.000Z","updated_at":"2026-02-16T09:53:36.000Z","time_to_close":862316,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor-patch","update_count":21,"packages":[{"name":"streamlit","old_version":"1.28.0","new_version":"1.50.0","repository_url":"https://github.com/streamlit/streamlit"},{"name":"python-dotenv","old_version":"1.0.0","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"fastapi","old_version":"0.110.0","new_version":"0.128.2","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.27.1","new_version":"0.39.0"},{"name":"scipy","old_version":"1.11.4","new_version":"1.13.1","repository_url":"https://github.com/scipy/scipy"},{"name":"scikit-learn","old_version":"1.4.0","new_version":"1.6.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"joblib","old_version":"1.3.2","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"anthropic","old_version":"0.18.1","new_version":"0.78.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"textblob","old_version":"0.17.1","new_version":"0.19.0","repository_url":"https://github.com/sloria/TextBlob"},{"name":"pydantic","old_version":"2.6.1","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.1.0","new_version":"2.11.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"python-jose","old_version":"3.3.0","new_version":"3.5.0"},{"name":"python-multipart","old_version":"0.0.6","new_version":"0.0.20","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"openpyxl","old_version":"3.1.2","new_version":"3.1.5"},{"name":"onnxruntime","old_version":"1.16.3","new_version":"1.20.1","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"httpx","old_version":"0.26.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"requests","old_version":"2.31.0","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"tokenizers","old_version":"0.15.1","new_version":"0.22.2","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"spacy","old_version":"3.7.2","new_version":"3.8.11","repository_url":"https://github.com/explosion/spaCy"},{"name":"websocket-client","old_version":"1.6.4","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"asyncio-mqtt","old_version":"0.13.0","new_version":"0.16.2","repository_url":"https://github.com/sbtinstruments/asyncio-mqtt"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 21 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.28.0` | `1.50.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.0` | `1.2.1` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.110.0` | `0.128.2` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.27.1` | `0.39.0` |\n| [scipy](https://github.com/scipy/scipy) | `1.11.4` | `1.13.1` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.4.0` | `1.6.1` |\n| [joblib](https://github.com/joblib/joblib) | `1.3.2` | `1.5.3` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `0.18.1` | `0.78.0` |\n| [textblob](https://github.com/sloria/TextBlob) | `0.17.1` | `0.19.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.6.1` | `2.12.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.1.0` | `2.11.0` |\n| [python-jose[cryptography]](https://github.com/mpdavis/python-jose) | `3.3.0` | `3.5.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.6` | `0.0.20` |\n| [openpyxl](https://openpyxl.readthedocs.io) | `3.1.2` | `3.1.5` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.16.3` | `1.20.1` |\n| [httpx](https://github.com/encode/httpx) | `0.26.0` | `0.28.1` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.32.5` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.15.1` | `0.22.2` |\n| [spacy](https://github.com/explosion/spaCy) | `3.7.2` | `3.8.11` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.6.4` | `1.9.0` |\n| [asyncio-mqtt](https://github.com/sbtinstruments/asyncio-mqtt) | `0.13.0` | `0.16.2` |\n\n\nUpdates `streamlit` from 1.28.0 to 1.50.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/streamlit/streamlit/releases\"\u003estreamlit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.50.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes 🛠\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: deprecate kwargs in st.plotly_chart and add config dict instead by \u003ca href=\"https://github.com/zyfy29\"\u003e\u003ccode\u003e@​zyfy29\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12291\"\u003estreamlit/streamlit#12291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.checkbox\u003c/code\u003e \u0026amp; \u003ccode\u003est.toggle\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12372\"\u003estreamlit/streamlit#12372\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003e**kwargs\u003c/code\u003e support from \u003ccode\u003est.write\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12375\"\u003estreamlit/streamlit#12375\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.number_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12437\"\u003estreamlit/streamlit#12437\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.text_area\u003c/code\u003e \u0026amp; \u003ccode\u003est.text_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12397\"\u003estreamlit/streamlit#12397\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eMultiselectColumn\u003c/code\u003e for \u003ccode\u003est.dataframe\u003c/code\u003e and \u003ccode\u003est.data_editor\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/9223\"\u003estreamlit/streamlit#9223\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for source directly in theming font configs by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12239\"\u003estreamlit/streamlit#12239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[feat] Add \u003ccode\u003edefault\u003c/code\u003e param to \u003ccode\u003est.tabs\u003c/code\u003e by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12313\"\u003estreamlit/streamlit#12313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eborder\u003c/code\u003e parameter to \u003ccode\u003est.table\u003c/code\u003e by \u003ca href=\"https://github.com/jrieke\"\u003e\u003ccode\u003e@​jrieke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/11796\"\u003estreamlit/streamlit#11796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[feat] Hover, active, focus-visible states for CopyButton by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12348\"\u003estreamlit/streamlit#12348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[AdvancedLayouts] Adds a width parameters to \u003ccode\u003est.line_chart\u003c/code\u003e. by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/11923\"\u003estreamlit/streamlit#11923\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd main theme color config options by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12288\"\u003estreamlit/streamlit#12288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for button widgets by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12332\"\u003estreamlit/streamlit#12332\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esort\u003c/code\u003e parameter to \u003ccode\u003est.bar_chart\u003c/code\u003e by \u003ca href=\"https://github.com/jrieke\"\u003e\u003ccode\u003e@​jrieke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12339\"\u003estreamlit/streamlit#12339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd theme background color config options by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12405\"\u003estreamlit/streamlit#12405\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd theme text color config options by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12438\"\u003estreamlit/streamlit#12438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.time_input\u003c/code\u003e \u0026amp; \u003ccode\u003est.date_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12464\"\u003estreamlit/streamlit#12464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[feat] Add sample rate parameter to \u003ccode\u003est.audio_input\u003c/code\u003e component by \u003ca href=\"https://github.com/sfc-gh-nbellante\"\u003e\u003ccode\u003e@​sfc-gh-nbellante\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12272\"\u003estreamlit/streamlit#12272\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMetric supports numerics like decimal. by \u003ca href=\"https://github.com/aebrahim\"\u003e\u003ccode\u003e@​aebrahim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12377\"\u003estreamlit/streamlit#12377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow slider tick labels on hover by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12367\"\u003estreamlit/streamlit#12367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[AdvancedLayouts] Add height param to \u003ccode\u003est.graphviz_chart\u003c/code\u003e by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12297\"\u003estreamlit/streamlit#12297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.selectbox\u003c/code\u003e \u0026amp; \u003ccode\u003est.multiselect\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12493\"\u003estreamlit/streamlit#12493\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport configuring the chart column colors by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12292\"\u003estreamlit/streamlit#12292\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix code usage in markdown labels by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12175\"\u003estreamlit/streamlit#12175\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Fullscreen behaviour for \u003ccode\u003est.image\u003c/code\u003e with use_container_width=True or width=\u0026quot;stretch\u0026quot; by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12235\"\u003estreamlit/streamlit#12235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] DateInput: normalize selected dates to start-of-day to honor max by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12295\"\u003estreamlit/streamlit#12295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure markdown images keep the aspect ratio by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12343\"\u003estreamlit/streamlit#12343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue with typing formatted values into \u003ccode\u003est.number_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12351\"\u003estreamlit/streamlit#12351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] \u003ccode\u003ehtml\u003c/code\u003e with float height.  by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12354\"\u003estreamlit/streamlit#12354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Share more code between Selectbox and Multiselect to align behavior by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12330\"\u003estreamlit/streamlit#12330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix logo pushing out collapse button by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12329\"\u003estreamlit/streamlit#12329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix long-words overflowing markdown container by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12370\"\u003estreamlit/streamlit#12370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MIME type for \u003ccode\u003e.mjs\u003c/code\u003e by \u003ca href=\"https://github.com/geoextra\"\u003e\u003ccode\u003e@​geoextra\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12399\"\u003estreamlit/streamlit#12399\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Pandas styler performance regression by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12422\"\u003estreamlit/streamlit#12422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Allow empty section pages in top navigation similar to how we do it for sidebar nav  by \u003ca href=\"https://github.com/nico-bellante\"\u003e\u003ccode\u003e@​nico-bellante\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12247\"\u003estreamlit/streamlit#12247\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] horizontal alignment of st.image in vertical containers by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12495\"\u003estreamlit/streamlit#12495\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Setting 0 for height/width on components.html and components.iframe .  by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12479\"\u003estreamlit/streamlit#12479\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix duckdb integration test by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12537\"\u003estreamlit/streamlit#12537\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert number input component refactoring by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12547\"\u003estreamlit/streamlit#12547\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd default main colors to theme by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12334\"\u003estreamlit/streamlit#12334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelease/1.49.0 by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12328\"\u003estreamlit/streamlit#12328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelease/1.49.1 by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12376\"\u003estreamlit/streamlit#12376\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/streamlit/streamlit/commit/52736534b6488da3bcb0c9d8bba855855a963678\"\u003e\u003ccode\u003e5273653\u003c/code\u003e\u003c/a\u003e Docstrings for 1.50.0 (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12605\"\u003e#12605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/f831f19024003fb0c0b3195c6150825deb7520fc\"\u003e\u003ccode\u003ef831f19\u003c/code\u003e\u003c/a\u003e Up version to 1.50.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/0ba383ec56e18df5e0efa8d62b8f00626dcfc128\"\u003e\u003ccode\u003e0ba383e\u003c/code\u003e\u003c/a\u003e [feat] Add Patch Release Branch Creation workflow (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12509\"\u003e#12509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/5abda776f6ee13a32ef8e5c5477205a73db1d593\"\u003e\u003ccode\u003e5abda77\u003c/code\u003e\u003c/a\u003e Support configuring the chart column colors (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12292\"\u003e#12292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/9d0e6bdcd383a52a75a12224c84f5e71d886e4a6\"\u003e\u003ccode\u003e9d0e6bd\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.selectbox\u003c/code\u003e \u0026amp; \u003ccode\u003est.multiselect\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12493\"\u003e#12493\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/53b2c4f741c5f3914015c0868e2169449b0735f9\"\u003e\u003ccode\u003e53b2c4f\u003c/code\u003e\u003c/a\u003e Fix pytest warning filter error (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12558\"\u003e#12558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/8608e83d9aadb5f79f03d7f9e817f9b12f24ad45\"\u003e\u003ccode\u003e8608e83\u003c/code\u003e\u003c/a\u003e Add support for new ruff rules (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12538\"\u003e#12538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/dec9d209fcdcfc2092ad5b7ab08ca79622936b5b\"\u003e\u003ccode\u003edec9d20\u003c/code\u003e\u003c/a\u003e Revert number input component refactoring (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12547\"\u003e#12547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/57fd06756fd59112c4247dbdb383ecf3affb2839\"\u003e\u003ccode\u003e57fd067\u003c/code\u003e\u003c/a\u003e [feat] Add Cherry-Pick to Release Branch automation (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12516\"\u003e#12516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/c5aa15cb69d8efe754b0b182f273d262d0f33849\"\u003e\u003ccode\u003ec5aa15c\u003c/code\u003e\u003c/a\u003e Update mypy requirement from \u0026lt;1.18,\u0026gt;=1.16.1 to \u0026gt;=1.16.1,\u0026lt;1.19 in /lib (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12551\"\u003e#12551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/streamlit/streamlit/compare/1.28.0...1.50.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.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 `fastapi` from 0.110.0 to 0.128.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.128.2\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for PEP695 \u003ccode\u003eTypeAliasType\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13920\"\u003e#13920\u003c/a\u003e by \u003ca href=\"https://github.com/cstruct\"\u003e\u003ccode\u003e@​cstruct\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Allow \u003ccode\u003eResponse\u003c/code\u003e type hint as dependency annotation. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14794\"\u003e#14794\u003c/a\u003e by \u003ca href=\"https://github.com/jonathan-fulton\"\u003e\u003ccode\u003e@​jonathan-fulton\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix using \u003ccode\u003eJson[list[str]]\u003c/code\u003e type (issue \u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/10997\"\u003e#10997\u003c/a\u003e). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14616\"\u003e#14616\u003c/a\u003e by \u003ca href=\"https://github.com/mkanetsuna\"\u003e\u003ccode\u003e@​mkanetsuna\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update docs for translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14830\"\u003e#14830\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Fix duplicate word in \u003ccode\u003eadvanced-dependencies.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14815\"\u003e#14815\u003c/a\u003e by \u003ca href=\"https://github.com/Rayyan-Oumlil\"\u003e\u003ccode\u003e@​Rayyan-Oumlil\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🌐 Enable Traditional Chinese translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14842\"\u003e#14842\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🌐 Enable French docs translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14841\"\u003e#14841\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 translations for fr (translate-page). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14837\"\u003e#14837\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 translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14836\"\u003e#14836\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 translations for pt (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14833\"\u003e#14833\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 translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14835\"\u003e#14835\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 translations for es (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14832\"\u003e#14832\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 translations for tr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14831\"\u003e#14831\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 translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14790\"\u003e#14790\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 translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14826\"\u003e#14826\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 translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14825\"\u003e#14825\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 translations for uk (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14822\"\u003e#14822\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 docs and translations scripts, enable Turkish. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14824\"\u003e#14824\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Add max pages to translate to configs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14840\"\u003e#14840\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.128.1\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eviewport\u003c/code\u003e meta tag to improve Swagger UI on mobile devices. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14777\"\u003e#14777\u003c/a\u003e by \u003ca href=\"https://github.com/Joab0\"\u003e\u003ccode\u003e@​Joab0\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🚸 Improve error message for invalid query parameter type annotations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14479\"\u003e#14479\u003c/a\u003e by \u003ca href=\"https://github.com/retwish\"\u003e\u003ccode\u003e@​retwish\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Update \u003ccode\u003eValidationError\u003c/code\u003e schema to include \u003ccode\u003einput\u003c/code\u003e and \u003ccode\u003ectx\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14791\"\u003e#14791\u003c/a\u003e by \u003ca href=\"https://github.com/jonathan-fulton\"\u003e\u003ccode\u003e@​jonathan-fulton\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Fix TYPE_CHECKING annotations for Python 3.14 (PEP 649). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14789\"\u003e#14789\u003c/a\u003e by \u003ca href=\"https://github.com/mgu\"\u003e\u003ccode\u003e@​mgu\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Strip whitespaces from \u003ccode\u003eAuthorization\u003c/code\u003e header credentials. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14786\"\u003e#14786\u003c/a\u003e by \u003ca href=\"https://github.com/WaveTheory1\"\u003e\u003ccode\u003e@​WaveTheory1\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Fix OpenAPI duplication of \u003ccode\u003eanyOf\u003c/code\u003e refs for app-level responses with specified \u003ccode\u003econtent\u003c/code\u003e and \u003ccode\u003emodel\u003c/code\u003e as \u003ccode\u003eUnion\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14463\"\u003e#14463\u003c/a\u003e by \u003ca href=\"https://github.com/DJMcoder\"\u003e\u003ccode\u003e@​DJMcoder\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/79406a4b04078155ccc03e2d48ca0799836cfb4b\"\u003e\u003ccode\u003e79406a4\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.128.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/de56c96c640dddb224c0088ed6d949efbf86d853\"\u003e\u003ccode\u003ede56c96\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/570e592a03c37c0436fea3727bd1be873417d9fb\"\u003e\u003ccode\u003e570e592\u003c/code\u003e\u003c/a\u003e 🌐 Enable Traditional Chinese translations (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14842\"\u003e#14842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/110b45d9b245d42a114a965bbd3039458afbf95e\"\u003e\u003ccode\u003e110b45d\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/72325f698f7ab55e7df2f7fc40cc52693eadd687\"\u003e\u003ccode\u003e72325f6\u003c/code\u003e\u003c/a\u003e 🌐 Enable French docs translations (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14841\"\u003e#14841\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8bdbd3725f7c88f3071ed9623da0945a269d3706\"\u003e\u003ccode\u003e8bdbd37\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/23ddf09dd197ba099edc1b06eba61f7fc20a5ade\"\u003e\u003ccode\u003e23ddf09\u003c/code\u003e\u003c/a\u003e 🔨 Add max pages to translate to configs (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14840\"\u003e#14840\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6646e2b94f13fe4145560d02cef05cfd3a6bc925\"\u003e\u003ccode\u003e6646e2b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c5fd75a321496b1f8212744bde217ec8ea956154\"\u003e\u003ccode\u003ec5fd75a\u003c/code\u003e\u003c/a\u003e 🐛 Fix using \u003ccode\u003eJson[list[str]]\u003c/code\u003e type (issue \u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/10997\"\u003e#10997\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14616\"\u003e#14616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/54f8aeeb9a15e4d5a12401ec5549840966df0087\"\u003e\u003ccode\u003e54f8aee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.110.0...0.128.2\"\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.27.1 to 0.39.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn[standard]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.39.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eexplicitly start ASGI run with empty context by \u003ca href=\"https://github.com/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2742\"\u003eKludex/uvicorn#2742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(websockets): Send close frame on ASGI return by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2769\"\u003eKludex/uvicorn#2769\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2742\"\u003eKludex/uvicorn#2742\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.38.0...0.39.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.38.0...0.39.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.38.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14 by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2723\"\u003eKludex/uvicorn#2723\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NGANAMODEIJunior\"\u003e\u003ccode\u003e@​NGANAMODEIJunior\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2713\"\u003eKludex/uvicorn#2713\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.37.0...0.38.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.37.0...0.38.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.37.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--timeout-worker-healthcheck\u003c/code\u003e setting by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2711\"\u003eKludex/uvicorn#2711\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eos.PathLike[str]\u003c/code\u003e type to \u003ccode\u003essl_ca_certs\u003c/code\u003e by \u003ca href=\"https://github.com/rnv812\"\u003e\u003ccode\u003e@​rnv812\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2676\"\u003eKludex/uvicorn#2676\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LincolnPuzey\"\u003e\u003ccode\u003e@​LincolnPuzey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2669\"\u003eKludex/uvicorn#2669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rnv812\"\u003e\u003ccode\u003e@​rnv812\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2676\"\u003eKludex/uvicorn#2676\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.36.1...0.37.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.36.1...0.37.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.36.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRaise an exception when calling removed \u003ccode\u003eConfig.setup_event_loop()\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2709\"\u003eKludex/uvicorn#2709\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.36.0...0.36.1\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.36.0...0.36.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.36.0\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport custom IOLOOPs by \u003ca href=\"https://github.com/gnir-work\"\u003e\u003ccode\u003e@​gnir-work\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2435\"\u003eKludex/uvicorn#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow to provide importable string in \u003ccode\u003e--http\u003c/code\u003e, \u003ccode\u003e--ws\u003c/code\u003e and \u003ccode\u003e--loop\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2658\"\u003eKludex/uvicorn#2658\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gnir-work\"\u003e\u003ccode\u003e@​gnir-work\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2435\"\u003eKludex/uvicorn#2435\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn[standard]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.39.0 (December 21, 2025)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSend close frame on ASGI return for WebSockets (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2769\"\u003e#2769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExplicitly start ASGI run with empty context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2742\"\u003e#2742\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.38.0 (October 18, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2723\"\u003e#2723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.37.0 (September 23, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--timeout-worker-healthcheck\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2711\"\u003e#2711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eos.PathLike[str]\u003c/code\u003e type to \u003ccode\u003essl_ca_certs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2676\"\u003e#2676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.36.1 (September 23, 2025)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaise an exception when calling removed \u003ccode\u003eConfig.setup_event_loop()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2709\"\u003e#2709\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.36.0 (September 20, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport custom IOLOOPs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2435\"\u003e#2435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow to provide importable string in \u003ccode\u003e--http\u003c/code\u003e, \u003ccode\u003e--ws\u003c/code\u003e and \u003ccode\u003e--loop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2658\"\u003e#2658\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.35.0 (June 28, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eWebSocketsSansIOProtocol\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2540\"\u003e#2540\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefine help message for option \u003ccode\u003e--proxy-headers\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2653\"\u003e#2653\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.34.3 (June 1, 2025)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't include \u003ccode\u003ecwd()\u003c/code\u003e when non-empty \u003ccode\u003e--reload-dirs\u003c/code\u003e is passed (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2598\"\u003e#2598\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eApply \u003ccode\u003eget_client_addr\u003c/code\u003e formatting to WebSocket logging (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2636\"\u003e#2636\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4f40b8495772eb3a1ab3613ffd7be5156f8e1389\"\u003e\u003ccode\u003e4f40b84\u003c/code\u003e\u003c/a\u003e Version 0.39.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2770\"\u003e#2770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5692dfc416f9e65aee5028e55d119313d8d3ab0f\"\u003e\u003ccode\u003e5692dfc\u003c/code\u003e\u003c/a\u003e fix(websockets): Send close frame on ASGI return (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2769\"\u003e#2769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4194764a26824e5d8ddd1fa673df78dff82966e0\"\u003e\u003ccode\u003e4194764\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2763\"\u003e#2763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/d94bf28743de545d2d4b150f022203a5178cb705\"\u003e\u003ccode\u003ed94bf28\u003c/code\u003e\u003c/a\u003e explicitly start ASGI run with empty context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2742\"\u003e#2742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/8ae0bcbecb0a655789abf0c2dd4200848fc68a30\"\u003e\u003ccode\u003e8ae0bcb\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2748\"\u003e#2748\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4744ff9a1a4888c76ea160328cc9dcc2680c2c71\"\u003e\u003ccode\u003e4744ff9\u003c/code\u003e\u003c/a\u003e Add groups configuration for GitHub Actions (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2747\"\u003e#2747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/0391372376c264604a0475b0864bcbf3a8705352\"\u003e\u003ccode\u003e0391372\u003c/code\u003e\u003c/a\u003e chore(deps): bump astral-sh/setup-uv from 6.8.0 to 7.1.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2746\"\u003e#2746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/69a6ae319801a5866ec07afdeb2ff3d912f4d3a0\"\u003e\u003ccode\u003e69a6ae3\u003c/code\u003e\u003c/a\u003e Improve typing in \u003ccode\u003etest_http.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2740\"\u003e#2740\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3850ad6520cafb290bd4174fa9c4ca5d33440c82\"\u003e\u003ccode\u003e3850ad6\u003c/code\u003e\u003c/a\u003e Version 0.38.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2733\"\u003e#2733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9b3f17a549ec96f57bf4d975145fc58feefdd4e8\"\u003e\u003ccode\u003e9b3f17a\u003c/code\u003e\u003c/a\u003e Support Python 3.14 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2723\"\u003e#2723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.27.1...0.39.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scipy` from 1.11.4 to 1.13.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scipy/scipy/releases\"\u003escipy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSciPy 1.13.1 Release Notes\u003c/h1\u003e\n\u003cp\u003eSciPy \u003ccode\u003e1.13.1\u003c/code\u003e is a bug-fix release with no new features\ncompared to \u003ccode\u003e1.13.0\u003c/code\u003e. The version of OpenBLAS shipped with\nthe PyPI binaries has been increased to \u003ccode\u003e0.3.27\u003c/code\u003e.\u003c/p\u003e\n\u003ch1\u003eAuthors\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eName (commits)\u003c/li\u003e\n\u003cli\u003eh-vetinari (1)\u003c/li\u003e\n\u003cli\u003eJake Bowhay (2)\u003c/li\u003e\n\u003cli\u003eEvgeni Burovski (6)\u003c/li\u003e\n\u003cli\u003eSean Cheah (2)\u003c/li\u003e\n\u003cli\u003eLucas Colley (2)\u003c/li\u003e\n\u003cli\u003eDWesl (2)\u003c/li\u003e\n\u003cli\u003eRalf Gommers (7)\u003c/li\u003e\n\u003cli\u003eBen Greiner (1) +\u003c/li\u003e\n\u003cli\u003eMatt Haberland (2)\u003c/li\u003e\n\u003cli\u003eGregory R. Lee (1)\u003c/li\u003e\n\u003cli\u003ePhilip Loche (1) +\u003c/li\u003e\n\u003cli\u003eSijo Valayakkad Manikandan (1) +\u003c/li\u003e\n\u003cli\u003eMatti Picus (1)\u003c/li\u003e\n\u003cli\u003eTyler Reddy (62)\u003c/li\u003e\n\u003cli\u003eAtsushi Sakai (1)\u003c/li\u003e\n\u003cli\u003eDaniel Schmitz (2)\u003c/li\u003e\n\u003cli\u003eDan Schult (3)\u003c/li\u003e\n\u003cli\u003eScott Shambaugh (2)\u003c/li\u003e\n\u003cli\u003eEdgar Andrés Margffoy Tuay (1)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eA total of 19 people contributed to this release.\nPeople with a \u0026quot;+\u0026quot; by their names contributed a patch for the first time.\nThis list of names is automatically generated, and may not be fully complete.\u003c/p\u003e\n\u003ch1\u003eSciPy 1.13.0 Release Notes\u003c/h1\u003e\n\u003cp\u003eSciPy \u003ccode\u003e1.13.0\u003c/code\u003e is the culmination of 3 months of hard work. This\nout-of-band release aims to support NumPy \u003ccode\u003e2.0.0\u003c/code\u003e, and is backwards\ncompatible to NumPy \u003ccode\u003e1.22.4\u003c/code\u003e. The version of OpenBLAS used to build\nthe PyPI wheels has been increased to \u003ccode\u003e0.3.26.dev\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis release requires Python 3.9+ and NumPy 1.22.4 or greater.\u003c/p\u003e\n\u003cp\u003eFor running on PyPy, PyPy3 6.0+ is required.\u003c/p\u003e\n\u003ch1\u003eHighlights of this release\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/44e4ebaac992fde33f04638b99629d23973cb9b2\"\u003e\u003ccode\u003e44e4eba\u003c/code\u003e\u003c/a\u003e REL: SciPy 1.13.1 release commit [wheel build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/2eb8e1b7380da0fada12ffd8d2c41f62dc74cb2e\"\u003e\u003ccode\u003e2eb8e1b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy/issues/20632\"\u003e#20632\u003c/a\u003e from tylerjereddy/treddy_prep_1_13_1_backports\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/1a00d4856bfcb5d6c3d6796ac8cd4278abae3016\"\u003e\u003ccode\u003e1a00d48\u003c/code\u003e\u003c/a\u003e DOC: PR 20632 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/11e99bad5812e5e1831553b5a901f5beea62dd1b\"\u003e\u003ccode\u003e11e99ba\u003c/code\u003e\u003c/a\u003e BUG: stats: Fix \u003ccode\u003ezipf.pmf\u003c/code\u003e and \u003ccode\u003ezipfian.pmf\u003c/code\u003e for int32 \u003ccode\u003ek\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scipy/scipy/issues/20702\"\u003e#20702\u003c/a\u003e) [wheel bu...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/506cbeb5c5e82e25bcc4c8e833f2bab8f60a0cd1\"\u003e\u003ccode\u003e506cbeb\u003c/code\u003e\u003c/a\u003e MAINT: stats.wilcoxon: fix bug with Ndim\u0026gt;1, shape[axis]\u0026gt;50, NaN, 'auto' (\u003ca href=\"https://redirect.github.com/scipy/scipy/issues/20592\"\u003e#20592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/c9d861396838f2fd05b300cc79bfea9fb40dddad\"\u003e\u003ccode\u003ec9d8613\u003c/code\u003e\u003c/a\u003e CI, MAINT: PR 20632 revisions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/95c50a4839bd5b4014c1d7ddde3f7a08d75d7134\"\u003e\u003ccode\u003e95c50a4\u003c/code\u003e\u003c/a\u003e MAINT: PR 20632 revisions [wheel build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/e7abaf1baad3db6788a980a858a4f74fb730ca31\"\u003e\u003ccode\u003ee7abaf1\u003c/code\u003e\u003c/a\u003e MAINT: PR 20632 revisions [wheel build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/aa32933aa03f277bfebdd6e86c267483c8cd750b\"\u003e\u003ccode\u003eaa32933\u003c/code\u003e\u003c/a\u003e CI: PR 20632 revisions [wheel build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/023b0fb7fb7b0e290a0a1b3739e9a041ee5d3c4b\"\u003e\u003ccode\u003e023b0fb\u003c/code\u003e\u003c/a\u003e CI: MR 20632 revisions\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scipy/scipy/compare/v1.11.4...v1.13.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scikit-learn` from 1.4.0 to 1.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scikit-learn/scikit-learn/releases\"\u003escikit-learn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eScikit-learn 1.6.1\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.6.1 release.\u003c/p\u003e\n\u003cp\u003eThis release contains fixes for a few regressions introduced in 1.6.\u003c/p\u003e\n\u003cp\u003eYou can see the changelog here: \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.6.html#version-1-6-1\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.6.html#version-1-6-1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThanks to everyone who contributed to this release !\u003c/p\u003e\n\u003ch2\u003eScikit-learn 1.6.0\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.6.0 release.\u003c/p\u003e\n\u003cp\u003eYou can read the release highlights under \u003ca href=\"https://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_6_0.html\"\u003ehttps://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_6_0.html\u003c/a\u003e and the long version of the change log under \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.6.html\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.6.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis version supports Python versions 3.9 to 3.13 and features an experimental support of free-threaded CPython.\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eScikit-learn 1.5.2\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.5.2 release.\u003c/p\u003e\n\u003cp\u003eThis release contains fixes for a few regressions introduced in 1.5.\u003c/p\u003e\n\u003cp\u003eYou can see the changelog here: \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.5.html#version-1-5-2\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.5.html#version-1-5-2\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/f159b78dc59f250cdde8fe391a21f0bc871960ad\"\u003e\u003ccode\u003ef159b78\u003c/code\u003e\u003c/a\u003e trigger wheel builder [cd build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/73cca70befaa3167903f1fbe15e81df587598f11\"\u003e\u003ccode\u003e73cca70\u003c/code\u003e\u003c/a\u003e generate changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/afaa07062bfd77c5ec15cfc62f0102c257092563\"\u003e\u003ccode\u003eafaa070\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/1f43fd2307c13593ea5ba194dcc5e7a814cfade9\"\u003e\u003ccode\u003e1f43fd2\u003c/code\u003e\u003c/a\u003e DOC: Updates to Macro vs micro-averaging in plot_roc.py (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/29845\"\u003e#29845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/ea8a7259f53c2cd78c1a8341bdab228e621dd2ba\"\u003e\u003ccode\u003eea8a725\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for main CI build(s) :lock: :robot: (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/30593\"\u003e#30593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/bc291f1030aa4f122187d5334a426ab1848a7ee6\"\u003e\u003ccode\u003ebc291f1\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for scipy-dev CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/f5f2b9c7b725a957caf8089d254f9176e8fabda9\"\u003e\u003ccode\u003ef5f2b9c\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for free-threaded CI build(s) :lock: :rob...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/acbb8621c816f12f0648f175edf8acb561768ec5\"\u003e\u003ccode\u003eacbb862\u003c/code\u003e\u003c/a\u003e TST Fix doctest due to GradientBoostingClassifier difference with scipy 1.15 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/42831e522f9f08f34e01cd85d60aa852914b135d\"\u003e\u003ccode\u003e42831e5\u003c/code\u003e\u003c/a\u003e FIX warn if an estimator does have a concrete \u003cstrong\u003esklearn_tags\u003c/strong\u003e implementation...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/0d2ce432de05b1f0c3b055572c08bee332c37724\"\u003e\u003ccode\u003e0d2ce43\u003c/code\u003e\u003c/a\u003e FIX change FutureWarnings to DeprecationWarnings for the tags (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/30573\"\u003e#30573\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scikit-learn/scikit-learn/compare/1.4.0...1.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `joblib` from 1.3.2 to 1.5.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joblib/joblib/releases\"\u003ejoblib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.3\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003e1.5.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003e1.4.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTST add a test that ensures conservation of byte order during IPC by \u003ca href=\"https://github.com/fcharras\"\u003e\u003ccode\u003e@​fcharras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1562\"\u003ejoblib/joblib#1562\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC fix typos in CHANGES.rst by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1571\"\u003ejoblib/joblib#1571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC typo in docs by \u003ca href=\"https://github.com/jmerkow\"\u003e\u003ccode\u003e@​jmerkow\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1574\"\u003ejoblib/joblib#1574\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFIX revert MemorizedFunc.call API change by \u003ca href=\"https://github.com/tomMoral\"\u003e\u003ccode\u003e@​tomMoral\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1576\"\u003ejoblib/joblib#1576\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/jmerkow\"\u003e\u003ccode\u003e@​jmerkow\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1574\"\u003ejoblib/joblib#1574\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/joblib/joblib/compare/1.4.0...1.4.2\"\u003ehttps://github.com/joblib/joblib/compare/1.4.0...1.4.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eJoblib 1.4.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFIX raise iterator exception in user's thread by \u003ca href=\"https://github.com/tomMoral\"\u003e\u003ccode\u003e@​tomMoral\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1491\"\u003ejoblib/joblib#1491\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: Update byte_bounds import by \u003ca href=\"https://github.com/mtsokol\"\u003e\u003ccode\u003e@​mtsokol\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1501\"\u003ejoblib/joblib#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFEA Implement generator unordered parameter by \u003ca href=\"https://github.com/fcharras\"\u003e\u003ccode\u003e@​fcharras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1463\"\u003ejoblib/joblib#1463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: Cleanup expired ndarray methods by \u003ca href=\"https://github.com/mtsokol\"\u003e\u003ccode\u003e@​mtsokol\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1506\"\u003ejoblib/joblib#1506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix README cloning url by \u003ca href=\"https://github.com/andreaso\"\u003e\u003ccode\u003e@​andreaso\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1508\"\u003ejoblib/joblib#1508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix README archive download link by \u003ca href=\"https://github.com/andreaso\"\u003e\u003ccode\u003e@​andreaso\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1509\"\u003ejoblib/joblib#1509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrefer \u003ca href=\"https://\"\u003ehttps://\u003c/a\u003e links in the documentation by \u003ca href=\"https://github.com/andreaso\"\u003e\u003ccode\u003e@​andreaso\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1510\"\u003ejoblib/joblib#1510\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStricter Dask tests cleanup by \u003ca href=\"https://github.com/ogrisel\"\u003e\u003ccode\u003e@​ogrisel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1514\"\u003ejoblib/joblib#1514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLN simplify code for easier read by \u003ca href=\"https://github.com/tomMoral\"\u003e\u003ccode\u003e@​tomMoral\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1517\"\u003ejoblib/joblib#1517\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVendor cloudpickle 3.0.0 and drop support for Python 3.7. by \u003ca href=\"https://github.com/ogrisel\"\u003e\u003ccode\u003e@​ogrisel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1515\"\u003ejoblib/joblib#1515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMNT Fix Python 3.12 deprecation warning by \u003ca href=\"https://github.com/lesteve\"\u003e\u003ccode\u003e@​lesteve\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1518\"\u003ejoblib/joblib#1518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFIX \u003ccode\u003e_get_items_to_delete\u003c/code\u003e raising error when items list empty by \u003ca href=\"https://github.com/Dr-Blank\"\u003e\u003ccode\u003e@​Dr-Blank\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1503\"\u003ejoblib/joblib#1503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dask backend for compatibility with return_as=generator by \u003ca href=\"https://github.com/fcharras\"\u003e\u003ccode\u003e@​fcharras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1520\"\u003ejoblib/joblib#1520\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: Best randomness with Parallel generators by \u003ca href=\"https://github.com/paquiteau\"\u003e\u003ccode\u003e@​paquiteau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1490\"\u003ejoblib/joblib#1490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMTN update ci pipelines to use python3.8 + test more pypy versions by \u003ca href=\"https://github.com/fcharras\"\u003e\u003ccode\u003e@​fcharras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1487\"\u003ejoblib/joblib#1487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMNT Restart readthedoc pipeline by \u003ca href=\"https://github.com/fcharras\"\u003e\u003ccode\u003e@​fcharras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1524\"\u003ejoblib/joblib#1524\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFIX Close cleanly distributed Client at the end of unit tests by \u003ca href=\"https://github.com/fcharras\"\u003e\u003ccode\u003e@​fcharras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1526\"\u003ejoblib/joblib#1526\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd pytest 8.x compatability by \u003ca href=\"https://github.com/mr-c\"\u003e\u003ccode\u003e@​mr-c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1553\"\u003ejoblib/joblib#1553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003en_jobs parameter in instantiation of Parallel should be an integer by \u003ca href=\"https://github.com/androids-electric-sheep\"\u003e\u003ccode\u003e@​androids-electric-sheep\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1549\"\u003ejoblib/joblib#1549\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC : updated n_jobs docs in Parallel class by \u003ca href=\"https://github.com/Schefflera-Arboricola\"\u003e\u003ccode\u003e@​Schefflera-Arboricola\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1537\"\u003ejoblib/joblib#1537\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI Fix url for scikit-learn nightly builds by \u003ca href=\"https://github.com/jeremiedbb\"\u003e\u003ccode\u003e@​jeremiedbb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1567\"\u003ejoblib/joblib#1567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eENH allow caching coroutine functions by \u003ca href=\"https://github.com/gsakkis\"\u003e\u003ccode\u003e@​gsakkis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/894\"\u003ejoblib/joblib#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC consistent default formating in doc by \u003ca href=\"https://github.com/tomMoral\"\u003e\u003ccode\u003e@​tomMoral\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1565\"\u003ejoblib/joblib#1565\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC add gotcha on non-reproducible pickling by \u003ca href=\"https://github.com/tomMoral\"\u003e\u003ccode\u003e@​tomMoral\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1566\"\u003ejoblib/joblib#1566\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/joblib/joblib/blob/main/CHANGES.rst\"\u003ejoblib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 1.5.3 - 2025/12/15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003eMemory\u003c/code\u003e object won't overwrite an already existing \u003ccode\u003e.gitignore\u003c/code\u003e file in its\ncache directory anymore.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1742\"\u003ejoblib/joblib#1742\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHarden the safety checks in \u003ccode\u003eeval_expr(pre_dispatch)\u003c/code\u003e to prevent excessive\nmemory allocation and potential crashes by limiting the allowed length of the\nexpression and the maximum numeric value of sub-expressions and not\nevaluating expressions with non-numeric literals.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1744\"\u003ejoblib/joblib#1744\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVendor cloudpickle 3.1.2 to fix a pickling problem with interactively\ndefined abstract base classes and type annotations in Python 3.14+.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 1.5.2 - 2025/08/27\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVendor \u003ccode\u003eloky3.5.6\u003c/code\u003e fixing the resource tracker for python 3.13.7+\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1740\"\u003ejoblib/joblib#1740\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMemory:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Ensure that temporary files managed by the ``Memory`` object do not collide\n  when using the same cache directory when the cache directory is accessed\n  concurrently from different nodes on a cluster with a shared filesystem.\n  https://github.com/joblib/joblib/pull/1656\n\u003ch2\u003eRelease 1.5.1 - 2025/05/23\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix backend hints causing errors when no multiprocessing is present\u003cbr /\u003e\n\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1721\"\u003ejoblib/joblib#1721\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVendor \u003ccode\u003eloky3.5.5\u003c/code\u003e fixing the resource_tracker clean up with earlier Python\u003cbr /\u003e\nversions. \u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1724\"\u003ejoblib/joblib#1724\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 1.5.0 -- 2025/05/03\u003c/h2\u003e\n\u003cp\u003eMemory:\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eEnforce \u003ccode\u003eage_limit\u003c/code\u003e is a positive timedelta for \u003ccode\u003eMemory.reduce_size\u003c/code\u003e,\nto avoid silently ignoring it.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1613\"\u003ejoblib/joblib#1613\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove deprecated \u003ccode\u003ebytes_limit\u003c/code\u003e argument for \u003ccode\u003eMemory\u003c/code\u003e, which should\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/40cd002ae1765195dfc4738a6bc7f5534b420a21\"\u003e\u003ccode\u003e40cd002\u003c/code\u003e\u003c/a\u003e RELEASE 1.5.3 (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1765\"\u003e#1765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/f05be6705e0f56856b76d76fecdddab95de394c8\"\u003e\u003ccode\u003ef05be67\u003c/code\u003e\u003c/a\u003e MNT Remove last usage of distutils (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1760\"\u003e#1760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/4273f396b7fb66da7f72f603a6bf6651393c5be1\"\u003e\u003ccode\u003e4273f39\u003c/code\u003e\u003c/a\u003e MNT bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1762\"\u003e#1762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/f465f0245d20c1e793d98b8071a9604623ffd528\"\u003e\u003ccode\u003ef465f02\u003c/code\u003e\u003c/a\u003e FIX don't overwrite existing .gitignore (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1742\"\u003e#1742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/cca7d87a94a1bd141c6c505a909becd4c1854fde\"\u003e\u003ccode\u003ecca7d87\u003c/code\u003e\u003c/a\u003e MNT bump sklearn test on python 3.12 (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1759\"\u003e#1759\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/f7775ad30051d95d83da76125b176962989bf763\"\u003e\u003ccode\u003ef7775ad\u003c/code\u003e\u003c/a\u003e MNT remove deprecated pytest feature (\u003ca href=\"https://redirect.github.com/joblib/joblib/iss...\n\n_Description has been truncated_","html_url":"https://github.com/ChunkyTortoise/EnterpriseHub/pull/27","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChunkyTortoise%2FEnterpriseHub/issues/27","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/27/packages"},{"uuid":"3887544515","node_id":"PR_kwDOKqBlQc7A_6RM","number":171,"state":"closed","title":"chore(deps): bump the pip group in /api with 38 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-03T17:08:25.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-02T19:27:30.000Z","updated_at":"2026-02-03T17:08:27.000Z","time_to_close":78055,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"pip","update_count":38,"packages":[{"name":"apscheduler","old_version":"3.10.4","new_version":"3.11.2","repository_url":"https://github.com/agronholm/apscheduler"},{"name":"azure-identity","old_version":"1.16.1","new_version":"1.25.1","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-storage-blob","old_version":"12.14.1","new_version":"12.28.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"chardet","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/chardet/chardet"},{"name":"elastic-apm","old_version":"6.23.0","new_version":"6.25.0","repository_url":"https://github.com/elastic/apm-agent-python"},{"name":"elasticsearch","old_version":"8.6.1","new_version":"8.19.3","repository_url":"https://github.com/elastic/elasticsearch-py"},{"name":"flask","old_version":"2.2.5","new_version":"2.3.3","repository_url":"https://github.com/pallets/flask"},{"name":"flask-caching","old_version":"2.0.2","new_version":"2.3.1","repository_url":"https://github.com/pallets-eco/flask-caching"},{"name":"prometheus-client","old_version":"0.17.1","new_version":"0.24.1","repository_url":"https://github.com/prometheus/client_python"},{"name":"pyjwt","old_version":"2.6.0","new_version":"2.11.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"redis","old_version":"4.5.4","new_version":"4.6.0","repository_url":"https://github.com/redis/redis-py"},{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"pysigma","old_version":"0.11.17","new_version":"0.11.23","repository_url":"https://github.com/SigmaHQ/pySigma"},{"name":"pysigma-backend-elasticsearch","old_version":"1.1.5","new_version":"1.1.6","repository_url":"https://github.com/SigmaHQ/pySigma-backend-elasticsearch"},{"name":"validators","old_version":"0.34.0","new_version":"0.35.0","repository_url":"https://github.com/python-validators/validators"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pydantic","old_version":"2.11.4","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.9.1","new_version":"2.11.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydash","old_version":"8.0.5","new_version":"8.0.6","repository_url":"https://github.com/dgilland/pydash"},{"name":"flake8","old_version":"7.2.0","new_version":"7.3.0","repository_url":"https://github.com/pycqa/flake8"},{"name":"retrying","old_version":"1.3.3","new_version":"1.4.2","repository_url":"https://github.com/groodt/retrying"},{"name":"pyftpdlib","old_version":"1.5.7","new_version":"1.5.10","repository_url":"https://github.com/giampaolo/pyftpdlib"},{"name":"mypy","old_version":"1.6.1","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mock","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/testing-cabal/mock"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"coverage","old_version":"7.4.0","new_version":"7.10.7","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"ruff","old_version":"0.8.6","new_version":"0.14.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-pyyaml","old_version":"6.0.12.12","new_version":"6.0.12.20250915","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-paramiko","old_version":"3.3.0.0","new_version":"3.5.0.20250801","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-pyopenssl","old_version":"23.3.0.0","new_version":"23.3.0.20240106","repository_url":"https://github.com/python/typeshed"},{"name":"types-redis","old_version":"4.6.0.9","new_version":"4.6.0.20241004","repository_url":"https://github.com/python/typeshed"},{"name":"types-six","old_version":"1.16.21.9","new_version":"1.17.0.20251009","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-requests","old_version":"2.31.0.6","new_version":"2.32.4.20260107","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"websocket-client","old_version":"1.5.1","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"types-mock","old_version":"5.2.0.20250306","new_version":"5.2.0.20250924","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"rich","old_version":"14.2.0","new_version":"14.3.2","repository_url":"https://github.com/Textualize/rich"}],"path":"/api","ecosystem":"pip"},"body":"Bumps the pip group in /api with 38 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [apscheduler](https://github.com/agronholm/apscheduler) | `3.10.4` | `3.11.2` |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.16.1` | `1.25.1` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.14.1` | `12.28.0` |\n| [chardet](https://github.com/chardet/chardet) | `5.1.0` | `5.2.0` |\n| [elastic-apm](https://github.com/elastic/apm-agent-python) | `6.23.0` | `6.25.0` |\n| [elasticsearch](https://github.com/elastic/elasticsearch-py) | `8.6.1` | `8.19.3` |\n| [flask](https://github.com/pallets/flask) | `2.2.5` | `2.3.3` |\n| [flask-caching](https://github.com/pallets-eco/flask-caching) | `2.0.2` | `2.3.1` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.17.1` | `0.24.1` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.6.0` | `2.11.0` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [redis](https://github.com/redis/redis-py) | `4.5.4` | `4.6.0` |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [pysigma](https://github.com/SigmaHQ/pySigma) | `0.11.17` | `0.11.23` |\n| [pysigma-backend-elasticsearch](https://github.com/SigmaHQ/pySigma-backend-elasticsearch) | `1.1.5` | `1.1.6` |\n| [validators](https://github.com/python-validators/validators) | `0.34.0` | `0.35.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.2.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.12.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.9.1` | `2.11.0` |\n| [pydash](https://github.com/dgilland/pydash) | `8.0.5` | `8.0.6` |\n| [flake8](https://github.com/pycqa/flake8) | `7.2.0` | `7.3.0` |\n| [retrying](https://github.com/groodt/retrying) | `1.3.3` | `1.4.2` |\n| [pyftpdlib](https://github.com/giampaolo/pyftpdlib) | `1.5.7` | `1.5.10` |\n| [mypy](https://github.com/python/mypy) | `1.6.1` | `1.19.1` |\n| [mock](https://github.com/testing-cabal/mock) | `5.1.0` | `5.2.0` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.4.0` | `7.10.7` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.8.6` | `0.14.14` |\n| [types-pyyaml](https://github.com/typeshed-internal/stub_uploader) | `6.0.12.12` | `6.0.12.20250915` |\n| [types-paramiko](https://github.com/typeshed-internal/stub_uploader) | `3.3.0.0` | `3.5.0.20250801` |\n| [types-pyopenssl](https://github.com/python/typeshed) | `23.3.0.0` | `23.3.0.20240106` |\n| [types-redis](https://github.com/python/typeshed) | `4.6.0.9` | `4.6.0.20241004` |\n| [types-six](https://github.com/typeshed-internal/stub_uploader) | `1.16.21.9` | `1.17.0.20251009` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.31.0.6` | `2.32.4.20260107` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.5.1` | `1.9.0` |\n| [types-mock](https://github.com/typeshed-internal/stub_uploader) | `5.2.0.20250306` | `5.2.0.20250924` |\n| [rich](https://github.com/Textualize/rich) | `14.2.0` | `14.3.2` |\n\nUpdates `apscheduler` from 3.10.4 to 3.11.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/apscheduler/releases\"\u003eapscheduler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where a job using a \u003ccode\u003eCronTrigger\u003c/code\u003e scheduled in a repeated time interval during DST transitions could cause the scheduler to get stuck in an infinite loop (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1021\"\u003e#1021\u003c/a\u003e; PR by \u003ca href=\"https://github.com/soulofakuma\"\u003e\u003ccode\u003e@​soulofakuma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003escheduler.shutdown()\u003c/code\u003e not raising \u003ccode\u003eSchedulerNotRunning\u003c/code\u003e (or raising the wrong exception) for asynchronous schedulers when the scheduler is in fact not running\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCronTrigger\u003c/code\u003e sticking on a folded datetime during the fall-back DST transition (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1021\"\u003e#1021\u003c/a\u003e \u0026lt;\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1021\"\u003eagronholm/apscheduler#1021\u003c/a\u003e\u0026gt;_; PR by \u003ca href=\"https://github.com/berianjames\"\u003e\u003ccode\u003e@​berianjames\u003c/code\u003e\u003c/a\u003e)`\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.6 and 3.7\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eZoneInfo\u003c/code\u003e time zones and deprecated support for pytz time zones\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCalendarIntervalTrigger\u003c/code\u003e, backported from the 4.x series\u003c/li\u003e\n\u003cli\u003eAdded the ability to export and import jobs via \u003ccode\u003escheduler.export_jobs()\u003c/code\u003e and \u003ccode\u003escheduler.import_jobs()\u003c/code\u003e, respectively\u003c/li\u003e\n\u003cli\u003eRemoved the dependency on \u003ccode\u003esix\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eProcessPoolExecutor\u003c/code\u003e to spawn new subprocesses from scratch instead of forking on all platform\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eAsyncIOScheduler\u003c/code\u003e inadvertently creating a defunct event loop at start, leading to the scheduler not working at all\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcessPoolExecutor\u003c/code\u003e not respecting the passed keyword arguments when a broken pool was being replaced\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/0f70950e320f3a7924dcd404c6c379143fb68b23\"\u003e\u003ccode\u003e0f70950\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/bc404e63af18bd8e493e0765f2ad0b51e6df0ef1\"\u003e\u003ccode\u003ebc404e6\u003c/code\u003e\u003c/a\u003e Updated publish actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/c3aa155bd39fe54639d69b396f9ad720246f0c98\"\u003e\u003ccode\u003ec3aa155\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/ad6b2dc766cd6722c8aa51543f988b9ee7b13110\"\u003e\u003ccode\u003ead6b2dc\u003c/code\u003e\u003c/a\u003e Added fix for get_next_fire_time not advancing through fold with unfolded pre...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/f4df139771b7741f58f0eb456f091d3f659555c1\"\u003e\u003ccode\u003ef4df139\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/25be7b77afca892d152441d4a61402623af7f943\"\u003e\u003ccode\u003e25be7b7\u003c/code\u003e\u003c/a\u003e Fixed CronTrigger getting stuck on fallback DST transition (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1079\"\u003e#1079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/12613862e34456215dc98574f6cf594f77d66f47\"\u003e\u003ccode\u003e1261386\u003c/code\u003e\u003c/a\u003e Updated etcd image repository name\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/b1f5636ccaf6a2fe86b208d7bd6b43024a1546b3\"\u003e\u003ccode\u003eb1f5636\u003c/code\u003e\u003c/a\u003e Fixed shutdown() not raising the correct exception for some schedulers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/6c72a51416893eb0eebbe63d0f2a0151952cab59\"\u003e\u003ccode\u003e6c72a51\u003c/code\u003e\u003c/a\u003e Backported release job from master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/4b965109548e528c061cf32b672de1a6f65f2c2a\"\u003e\u003ccode\u003e4b96510\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/apscheduler/compare/3.10.4...3.11.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `azure-identity` from 1.16.1 to 1.25.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/dbf147506014177ceb85ca4cf5e90eef5a5d4660\"\u003e\u003ccode\u003edbf1475\u003c/code\u003e\u003c/a\u003e [Identity] Update changelog (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/43249\"\u003e#43249\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/949e5b8d351d97b1abafb3fda49880bf2aaf401d\"\u003e\u003ccode\u003e949e5b8\u003c/code\u003e\u003c/a\u003e Added response hook to replace throughput (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/43243\"\u003e#43243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/65f6f1ac22eca4f5b3218279c73cc1e6568b29f3\"\u003e\u003ccode\u003e65f6f1a\u003c/code\u003e\u003c/a\u003e Rename Path Efficiency to Task Navigation Efficiency Evaluator and Return Onl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/772ee5ad10ad7f4867044ea39ce516f9dd3cc5bc\"\u003e\u003ccode\u003e772ee5a\u003c/code\u003e\u003c/a\u003e Rename Tool Call Accuracy Evaluator to Tool Call Quality (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/43246\"\u003e#43246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/05f1eae0b18abc85f5ffb759f943268dac9e06c5\"\u003e\u003ccode\u003e05f1eae\u003c/code\u003e\u003c/a\u003e Rename Task Success Evaluator to Task Completion Evaluator (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/43190\"\u003e#43190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/07395dd0dbdc75b25f5fc2ac8ff82a8824b5a90f\"\u003e\u003ccode\u003e07395dd\u003c/code\u003e\u003c/a\u003e [Identity] Skip IMDS probe when MI selected in DAC via env (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/43080\"\u003e#43080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/b0ec83c3f0ad69dd40aaf7e2c832616ea01060fc\"\u003e\u003ccode\u003eb0ec83c\u003c/code\u003e\u003c/a\u003e Revert behavior change introduced in \u003ca href=\"https://github.com/Azure/azure-sdk-tools\"\u003ehttps://github.com/Azure/azure-sdk-tools\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/33bbf3517faa8e0b285faa1b3b7241c00c50e7a8\"\u003e\u003ccode\u003e33bbf35\u003c/code\u003e\u003c/a\u003e [Identity] Improve MI error messages (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/43231\"\u003e#43231\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/f837589b09b3f37f3576ee4c752db56e9a281a81\"\u003e\u003ccode\u003ef837589\u003c/code\u003e\u003c/a\u003e update verifywhl to check that one of homepage/repository exists (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/43188\"\u003e#43188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/befebbf01f86e85a12b5f9a16adc3d2c5175703c\"\u003e\u003ccode\u003ebefebbf\u003c/code\u003e\u003c/a\u003e update pinned apistub version 0.3.23 (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/43237\"\u003e#43237\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.16.1...azure-identity_1.25.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `azure-storage-blob` from 12.14.1 to 12.28.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/releases\"\u003eazure-storage-blob's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eazure-storage-blob_12.28.0\u003c/h2\u003e\n\u003ch2\u003e12.28.0 (2026-01-06)\u003c/h2\u003e\n\u003ch3\u003eFeatures Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStable release of features from 12.28.0b1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eChanged the default \u003ccode\u003econnection_data_block_size\u003c/code\u003e for all clients from 4 KiB to 256 KiB. This should result in\nsignificantly better throughput on large file downloads for most environments.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eazure-storage-blob_12.28.0b1\u003c/h2\u003e\n\u003ch2\u003e12.28.0b1 (2025-12-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for service version 2026-02-06.\u003c/li\u003e\n\u003cli\u003eAdded support for the keywords \u003ccode\u003eif_modified_since\u003c/code\u003e, \u003ccode\u003eif_unmodified_since\u003c/code\u003e, \u003ccode\u003eetag\u003c/code\u003e, and \u003ccode\u003ematch_condition\u003c/code\u003e to\nconditionally perform \u003ccode\u003eBlobClient\u003c/code\u003e's \u003ccode\u003eset_blob_tags\u003c/code\u003e and \u003ccode\u003eget_blob_tags\u003c/code\u003e operations.\u003c/li\u003e\n\u003cli\u003eAdded support for the keyword \u003ccode\u003estart_from\u003c/code\u003e in \u003ccode\u003eContainerClient\u003c/code\u003e's \u003ccode\u003elist_blobs\u003c/code\u003e, \u003ccode\u003elist_blob_names\u003c/code\u003e, and \u003ccode\u003ewalk_blobs\u003c/code\u003e\nAPIs, which specifies the full path to start listing paths from.\u003c/li\u003e\n\u003cli\u003eAdded support for the keyword \u003ccode\u003euser_delegation_oid\u003c/code\u003e to \u003ccode\u003egenerate_blob_sas\u003c/code\u003e and \u003ccode\u003egenerate_container_sas\u003c/code\u003e, which\nspecifies the Entra ID of the user that is authorized to use the generated SAS URL.\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eUseDevelopmentStorage=true;\u003c/code\u003e as a valid connection string for Azurite.\u003c/li\u003e\n\u003cli\u003eAdded the ability to skip auto decompression on \u003ccode\u003eBlobClient.download_blob\u003c/code\u003e via the \u003ccode\u003edecompress\u003c/code\u003e keyword.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/b3301acbed95d1e11f8ab859eced5292627c763a\"\u003e\u003ccode\u003eb3301ac\u003c/code\u003e\u003c/a\u003e STG 100 GA Release Date for 2026-01-06\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/beb8dfaad1420c54288adb8e0ceb468cff144a70\"\u003e\u003ccode\u003ebeb8dfa\u003c/code\u003e\u003c/a\u003e [Storage][STG 100] Prepare branch for GA + cherry-pick block size change (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/44\"\u003e#44\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/874cfcf701ccc2a2ef9a3444fe0563ce2efdc058\"\u003e\u003ccode\u003e874cfcf\u003c/code\u003e\u003c/a\u003e [Storage] Update Swagger and Release Date (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/44243\"\u003e#44243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/4aca0cc83494e1fe243a21d31af357acf60160be\"\u003e\u003ccode\u003e4aca0cc\u003c/code\u003e\u003c/a\u003e Fix perf tests on Python 3.14 + Storage change (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/44230\"\u003e#44230\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/cd5ecc5c0e05c1deeb4b74f72d85f01418e5d27c\"\u003e\u003ccode\u003ecd5ecc5\u003c/code\u003e\u003c/a\u003e [Storage] Fix 100 Live Tests (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/44108\"\u003e#44108\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/1cd78b1c3dbc5acb2a40d81cf4d3587783a187eb\"\u003e\u003ccode\u003e1cd78b1\u003c/code\u003e\u003c/a\u003e [Storage] Added support for Python 3.14 + update 100 release date (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/44224\"\u003e#44224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/471cda17da08c0320c12c4f2ee30becaaec94a7a\"\u003e\u003ccode\u003e471cda1\u003c/code\u003e\u003c/a\u003e [Storage] Add Blob download perf test that uses HTTP library directly (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/44111\"\u003e#44111\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/9e53510dc0e1acfdbbf418174f656fac5025ea92\"\u003e\u003ccode\u003e9e53510\u003c/code\u003e\u003c/a\u003e [Storage] Decompression for Binary Response in Download APIs (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/43587\"\u003e#43587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/68b646be00366dc3f9157065eccf55dd0c7c21b2\"\u003e\u003ccode\u003e68b646b\u003c/code\u003e\u003c/a\u003e Removed create file with data and file semantics features (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/43978\"\u003e#43978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/09f0066bee9b717da6e15aa5fc2183e3490fe7f1\"\u003e\u003ccode\u003e09f0066\u003c/code\u003e\u003c/a\u003e [Storage] Added Support for \u003ccode\u003eUseDevelopmentStorage=true;\u003c/code\u003e for Connection Stri...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/compare/azure-storage-blob_12.14.1...azure-storage-blob_12.28.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chardet` from 5.1.0 to 5.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chardet/chardet/releases\"\u003echardet's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003echardet 5.2.0\u003c/h2\u003e\n\u003cp\u003eAdds support for running chardet CLI via \u003ccode\u003epython -m chardet\u003c/code\u003e (0e9b7bc20366163efcc221281201baff4100fe19, \u003ca href=\"https://github.com/dan-blanchard\"\u003e\u003ccode\u003e@​dan-blanchard\u003c/code\u003e\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/chardet/chardet/commit/78250d917a2883aa60215c04480aeb27a545f1d9\"\u003e\u003ccode\u003e78250d9\u003c/code\u003e\u003c/a\u003e Bump version to 5.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/0e9b7bc20366163efcc221281201baff4100fe19\"\u003e\u003ccode\u003e0e9b7bc\u003c/code\u003e\u003c/a\u003e Add \u003cstrong\u003emain\u003c/strong\u003e module to support python -m chardet\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/0649ffe20fb3fa435f0a0e01445e6ead6cc672ee\"\u003e\u003ccode\u003e0649ffe\u003c/code\u003e\u003c/a\u003e Bump version to 5.2.0dev0\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/chardet/chardet/compare/5.1.0...5.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `elastic-apm` from 6.23.0 to 6.25.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/elastic/apm-agent-python/releases\"\u003eelastic-apm's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.25.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIntroduce \u003ccode\u003eELASTIC_APM_SKIP_SERVER_INFO\u003c/code\u003e to reduce overhead on serverless with APM server 8.7.1+ \u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2516\"\u003e#2516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eList all exported symbols in elasticapm module  \u003ccode\u003e__all__\u003c/code\u003e \u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2504\"\u003e#2504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle Tornado 6.5.3 \u003ccode\u003eHttpHeaders\u003c/code\u003e \u003ccode\u003ein\u003c/code\u003e operator behavior change \u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2512\"\u003e#2512\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eRegion\u003c/th\u003e\n\u003cth\u003eARN\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eaf-south-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:af-south-1:2670937327\u0026lt;50:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eap-east-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:ap-east-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eap-northeast-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:ap-northeast-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eap-northeast-2\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:ap-northeast-2:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eap-northeast-3\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:ap-northeast-3:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eap-south-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:ap-south-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eap-southeast-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:ap-southeast-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eap-southeast-2\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:ap-southeast-2:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eap-southeast-3\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:ap-southeast-3:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eca-central-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:ca-central-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eeu-central-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:eu-central-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eeu-north-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:eu-north-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eeu-south-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:eu-south-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eeu-west-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:eu-west-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eeu-west-2\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:eu-west-2:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eeu-west-3\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:eu-west-3:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eme-south-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:me-south-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003esa-east-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:sa-east-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eus-east-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:us-east-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eus-east-2\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:us-east-2:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eus-west-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:us-west-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eus-west-2\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:us-west-2:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/md-adil\"\u003e\u003ccode\u003e@​md-adil\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/pull/2504\"\u003eelastic/apm-agent-python#2504\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/elastic/apm-agent-python/compare/v6.24.1...v6.25.0\"\u003ehttps://github.com/elastic/apm-agent-python/compare/v6.24.1...v6.25.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.24.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of psycopg ServerCursor and AsyncServerCursor instrumentation \u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2489\"\u003e#2489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix contrib/opentelemetry set_status to match base signature \u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2457\"\u003e#2457\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/elastic/apm-agent-python/blob/main/CHANGELOG.asciidoc\"\u003eelastic-apm's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e==== 6.25.0 - 2025-12-23\u003c/p\u003e\n\u003cp\u003e[float]\n===== Features\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIntroduce \u003ccode\u003eELASTIC_APM_SKIP_SERVER_INFO\u003c/code\u003e to reduce overhead on serverless with APM server 8.7.1+ {pull}2516\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2516\"\u003e#2516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eList all exported symbols in elasticapm module  \u003ccode\u003e__all__\u003c/code\u003e {pull}2504\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2504\"\u003e#2504\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e[float]\n===== Bug fixes\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle Tornado 6.5.3 \u003ccode\u003eHttpHeaders\u003c/code\u003e \u003ccode\u003ein\u003c/code\u003e operator behavior change {pull}2512\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2512\"\u003e#2512\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e[[release-notes-6.24.1]]\n==== 6.24.1 - 2025-11-21\u003c/p\u003e\n\u003cp\u003e[float]\n===== Bug fixes\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of psycopg ServerCursor and AsyncServerCursor instrumentation {pull}2489\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2489\"\u003e#2489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix contrib/opentelemetry set_status to match base signature {pull}2457\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2457\"\u003e#2457\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e[[release-notes-6.24.0]]\n==== 6.24.0 - 2025-08-12\u003c/p\u003e\n\u003cp\u003e[float]\n===== Features\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for recent sanic versions {pull}2190\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2190\"\u003e#2190\u003c/a\u003e, {pull}2194\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2194\"\u003e#2194\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake server certificate verification mandatory in fips mode {pull}2227\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2227\"\u003e#2227\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support Python 3.13 {pull}2216\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2216\"\u003e#2216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for azure-data-tables package for azure instrumentation {pull}2187\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2187\"\u003e#2187\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd span links from SNS messages {pull}2363\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2363\"\u003e#2363\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e[float]\n===== Bug fixes\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix psycopg2 cursor execute and executemany signatures {pull}2331\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2331\"\u003e#2331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix psycopg cursor execute and executemany signatures {pull}2332\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2332\"\u003e#2332\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix asgi middleware distributed tracing {pull}2334\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2334\"\u003e#2334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typing of start in Span / capture_span to float {pull}2335\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2335\"\u003e#2335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix azure instrumentation client_class and metrics sets invocation {pull}2337\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2337\"\u003e#2337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mysql_connector instrumentation connection retrieval {pull}2344\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2344\"\u003e#2344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove spurious Django QuerySet evaluation in case of database errors {pull}2158\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2158\"\u003e#2158\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e[[release-notes-6.23.0]]\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/apm-agent-python/commit/f425c427ba226aa64a80d6582a43fd5ce175366f\"\u003e\u003ccode\u003ef425c42\u003c/code\u003e\u003c/a\u003e update CHANGELOG and bump version to 6.25.0 (\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2518\"\u003e#2518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/apm-agent-python/commit/d962042ee6e7a7f9892e9fdfd2190f12598e0c58\"\u003e\u003ccode\u003ed962042\u003c/code\u003e\u003c/a\u003e build(deps): bump alpine from \u003ccode\u003e51183f2\u003c/code\u003e to \u003ccode\u003e865b95f\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2514\"\u003e#2514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/apm-agent-python/commit/cf6fbf2ecbdd4ee3165413ce5a56d45eccffbe39\"\u003e\u003ccode\u003ecf6fbf2\u003c/code\u003e\u003c/a\u003e elasticapm: introduce ELASTIC_APM_SKIP_SERVER_INFO (\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2516\"\u003e#2516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/apm-agent-python/commit/43f4deb8aca228877480c9e8b62696aea7883dce\"\u003e\u003ccode\u003e43f4deb\u003c/code\u003e\u003c/a\u003e updated the \u003cstrong\u003eall\u003c/strong\u003e section to include all  22 publicly exposed varia… (\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2504\"\u003e#2504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/apm-agent-python/commit/f8425150306e56179b6a714c304b936f42768b91\"\u003e\u003ccode\u003ef842515\u003c/code\u003e\u003c/a\u003e chore: deps(updatecli): Bump updatecli version to v0.112.0 (\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2510\"\u003e#2510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/apm-agent-python/commit/f5a12f8f301360a8a50234be65bf5a588d643c0a\"\u003e\u003ccode\u003ef5a12f8\u003c/code\u003e\u003c/a\u003e tornado: handle behaviour change in request.headers protocol (\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2512\"\u003e#2512\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/apm-agent-python/commit/bbaa3bbd5fd4ca1e10eb31cf997413c7bd4581c6\"\u003e\u003ccode\u003ebbaa3bb\u003c/code\u003e\u003c/a\u003e build(deps): bump wolfi/chainguard-base from \u003ccode\u003e1038c51\u003c/code\u003e to \u003ccode\u003e2b179e1\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2508\"\u003e#2508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/apm-agent-python/commit/648084b779dbff43858e6d05aff10ca2c9afb9ae\"\u003e\u003ccode\u003e648084b\u003c/code\u003e\u003c/a\u003e build(deps): bump wolfi/chainguard-base from \u003ccode\u003e2539782\u003c/code\u003e to \u003ccode\u003e1038c51\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2507\"\u003e#2507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/apm-agent-python/commit/1750a1dcb9887965c8c85ed815ff7b86b5f62270\"\u003e\u003ccode\u003e1750a1d\u003c/code\u003e\u003c/a\u003e chore: deps(updatecli): Bump updatecli version to v0.111.0 (\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2505\"\u003e#2505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/apm-agent-python/commit/30c4075a7342efbe61c2f7085d93bfbceb75daf2\"\u003e\u003ccode\u003e30c4075\u003c/code\u003e\u003c/a\u003e build(deps): bump alpine from \u003ccode\u003e4b7ce07\u003c/code\u003e to \u003ccode\u003e51183f2\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2503\"\u003e#2503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/elastic/apm-agent-python/compare/v6.23.0...v6.25.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `elasticsearch` from 8.6.1 to 8.19.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/elastic/elasticsearch-py/releases\"\u003eelasticsearch's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.19.3\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eInstrument ping with OTel (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3160\"\u003e#3160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd warnings for private APIs (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3212\"\u003e#3212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake positional arguments in DSL generated classes explicit (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3233\"\u003e#3233\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eES|QL query builder: fix missing assignment (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3151\"\u003e#3151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse relative imports to fix \u003ccode\u003eelasticsearch9\u003c/code\u003e package imports (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3232\"\u003e#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAPI\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eindices.delete_data_stream_options\u003c/code\u003e, \u003ccode\u003eindices.get_data_stream_options\u003c/code\u003e and \u003ccode\u003eindices.put_data_stream_options\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003etransform.get_node_stats\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003erequests_per_second\u003c/code\u003e argument to \u003ccode\u003edelete_by_query_rethrottle\u003c/code\u003e, \u003ccode\u003ereindex_rethrottle\u003c/code\u003e and \u003ccode\u003eupdate_by_query_rethrottle\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eallow_closed\u003c/code\u003e, \u003ccode\u003eallow_no_indices\u003c/code\u003e, \u003ccode\u003eexpand_wildcards\u003c/code\u003e, \u003ccode\u003eignore_throttled\u003c/code\u003e and \u003ccode\u003eignore_available\u003c/code\u003e arguments to \u003ccode\u003ecat.segments\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eid\u003c/code\u003e argument to \u003ccode\u003eml.stop_trained_model_deployment\u003c/code\u003e API\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.19.2\u003c/h2\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eflush_after_seconds\u003c/code\u003e option to \u003ccode\u003estreaming_bulk()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3064\"\u003e#3064\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDSL: support passing inner documents as \u003ccode\u003eAttrDict\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3080\"\u003e#3080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDSL: add some recently added field classes as top-level exports for the package (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAPI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003estreams\u003c/code\u003e namespace with \u003ccode\u003estreams.logs_disable\u003c/code\u003e, \u003ccode\u003estreams.logs_enable\u003c/code\u003e, \u003ccode\u003estreams.status\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eindices.get_data_stream_settings\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eindices.put_data_stream_settings\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ebytes\u003c/code\u003e and \u003ccode\u003etime\u003c/code\u003e parameters to various APIs in the \u003ccode\u003ecat\u003c/code\u003e namespace.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eindex_template\u003c/code\u003e parameter to \u003ccode\u003eindices.simulate_index_template\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003einput_type\u003c/code\u003e parameter to \u003ccode\u003einference.text_embedding\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eRemoved unsupported \u003ccode\u003esize\u003c/code\u003e parameter from \u003ccode\u003ereindex\u003c/code\u003e API\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDSL\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew \u003ccode\u003eCartesianBounds\u003c/code\u003e, \u003ccode\u003eCartesianCentroid\u003c/code\u003e, \u003ccode\u003eChangePoint\u003c/code\u003e aggregations\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ep_value\u003c/code\u003e parameter to \u003ccode\u003eSignificantTerms\u003c/code\u003e aggregation\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003efields\u003c/code\u003e parameter to \u003ccode\u003eSemanticText\u003c/code\u003e field\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd 3.14 to CI builds (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3103\"\u003e#3103\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/elastic/elasticsearch-py/commit/c686c6a958f221a2e601440901f25b87a11caaca\"\u003e\u003ccode\u003ec686c6a\u003c/code\u003e\u003c/a\u003e Release 8.19.3 (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3248\"\u003e#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/b4fda8987785f95897be79378da2bb4cc826b40c\"\u003e\u003ccode\u003eb4fda89\u003c/code\u003e\u003c/a\u003e Auto-generated API code (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3244\"\u003e#3244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/8830242d49192d5ec546af6863621747bfcffe77\"\u003e\u003ccode\u003e8830242\u003c/code\u003e\u003c/a\u003e Fix recursive errors generated in transport test (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3240\"\u003e#3240\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3241\"\u003e#3241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/d9dd6ff581104ce7cffefb3bfc05b1213483f450\"\u003e\u003ccode\u003ed9dd6ff\u003c/code\u003e\u003c/a\u003e explicit positional arguments in DSL generated classes (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3233\"\u003e#3233\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3237\"\u003e#3237\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/0b488f04de97da0eeae22abbad6ad6870266c6d9\"\u003e\u003ccode\u003e0b488f0\u003c/code\u003e\u003c/a\u003e Use relative imports to fix elasticsearch9 package imports (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3232\"\u003e#3232\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3236\"\u003e#3236\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/d02d20e6142112548475fda7c97109e7e0423883\"\u003e\u003ccode\u003ed02d20e\u003c/code\u003e\u003c/a\u003e Auto-generated code for 8.19 (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3223\"\u003e#3223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/1e4cea0c538417df252bec83b29c97fc2b0f79e2\"\u003e\u003ccode\u003e1e4cea0\u003c/code\u003e\u003c/a\u003e [Backport 8.19] Add warnings for private APIs (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3212\"\u003e#3212\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3215\"\u003e#3215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/367c5f2286d89dc753b325a54355143a683b0542\"\u003e\u003ccode\u003e367c5f2\u003c/code\u003e\u003c/a\u003e Bumps stack to version 8.19.9-SNAPSHOT (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3220\"\u003e#3220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/5e8f23c86918fe30e4af7792dfce7098e819e1ed\"\u003e\u003ccode\u003e5e8f23c\u003c/code\u003e\u003c/a\u003e Bumps stack to version 8.19.8-SNAPSHOT (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3210\"\u003e#3210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/3a7574acea839d91794bdb190ba46b35339a9292\"\u003e\u003ccode\u003e3a7574a\u003c/code\u003e\u003c/a\u003e Add global variable support to YAML test expression parser (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3196\"\u003e#3196\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3202\"\u003e#3202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/elastic/elasticsearch-py/compare/v8.6.1...v8.19.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask` from 2.2.5 to 2.3.3\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\u003e2.3.3\u003c/h2\u003e\n\u003cp\u003eThis is a fix release for the 2.3.x feature branch.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eChanges: \u003ca href=\"https://flask.palletsprojects.com/en/2.3.x/changes/#version-2-3-3\"\u003ehttps://flask.palletsprojects.com/en/2.3.x/changes/#version-2-3-3\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/31?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/31?closed=1\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.3.2\u003c/h2\u003e\n\u003cp\u003eThis is a security fix release for the 2.3.x release branch.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSecurity advisory: \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-m2qf-hxjv-5gpq\"\u003ehttps://github.com/pallets/flask/security/advisories/GHSA-m2qf-hxjv-5gpq\u003c/a\u003e, CVE-2023-30861\u003c/li\u003e\n\u003cli\u003eChanges: \u003ca href=\"https://flask.palletsprojects.com/en/2.3.x/changes/#version-2-3-2\"\u003ehttps://flask.palletsprojects.com/en/2.3.x/changes/#version-2-3-2\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/29?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/29?closed=1\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.3.1\u003c/h2\u003e\n\u003cp\u003eThis is a fix release for the 2.3.x release branch.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eChanges: \u003ca href=\"https://flask.palletsprojects.com/en/2.3.x/changes/#version-2-3-1\"\u003ehttps://flask.palletsprojects.com/en/2.3.x/changes/#version-2-3-1\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/28?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/28?closed=1\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.3.0\u003c/h2\u003e\n\u003cp\u003eThis is a feature release, which includes new features, removes previously deprecated code, and adds new deprecations. The 2.3.x branch is now the supported fix branch, the 2.2.x branch will become a tag marking the end of support for that branch. We encourage everyone to upgrade, and to use a tool such as \u003ca href=\"https://pypi.org/project/pip-tools/\"\u003epip-tools\u003c/a\u003e to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eChanges: \u003ca href=\"https://flask.palletsprojects.com/en/2.3.x/changes/#version-2-3-0\"\u003ehttps://flask.palletsprojects.com/en/2.3.x/changes/#version-2-3-0\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/24?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/24?closed=1\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 2.3.3\u003c/h2\u003e\n\u003cp\u003eReleased 2023-08-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.12 compatibility.\u003c/li\u003e\n\u003cli\u003eRequire Werkzeug \u0026gt;= 2.3.7.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eflit_core\u003c/code\u003e instead of \u003ccode\u003esetuptools\u003c/code\u003e as build backend.\u003c/li\u003e\n\u003cli\u003eRefactor how an app's root and instance paths are determined. :issue:\u003ccode\u003e5160\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.3.2\u003c/h2\u003e\n\u003cp\u003eReleased 2023-05-01\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003eVary: Cookie\u003c/code\u003e header when the session is accessed, modified, or refreshed.\u003c/li\u003e\n\u003cli\u003eUpdate Werkzeug requirement to \u0026gt;=2.3.3 to apply recent bug fixes.\n:ghsa:\u003ccode\u003em2qf-hxjv-5gpq\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2023-04-25\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRestore deprecated \u003ccode\u003efrom flask import Markup\u003c/code\u003e. :issue:\u003ccode\u003e5084\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2023-04-25\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDrop support for Python 3.7. :pr:\u003ccode\u003e5072\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate minimum requirements to the latest versions: Werkzeug\u0026gt;=2.3.0, Jinja2\u0026gt;3.1.2,\nitsdangerous\u0026gt;=2.1.2, click\u0026gt;=8.1.3.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove previously deprecated code. :pr:\u003ccode\u003e4995\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003epush\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e methods of the deprecated \u003ccode\u003e_app_ctx_stack\u003c/code\u003e and\n\u003ccode\u003e_request_ctx_stack\u003c/code\u003e objects are removed. \u003ccode\u003etop\u003c/code\u003e still exists to give\nextensions more time to update, but it will be removed.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eFLASK_ENV\u003c/code\u003e environment variable, \u003ccode\u003eENV\u003c/code\u003e config key, and \u003ccode\u003eapp.env\u003c/code\u003e\nproperty are removed.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003esession_cookie_name\u003c/code\u003e, \u003ccode\u003esend_file_max_age_default\u003c/code\u003e, \u003ccode\u003euse_x_sendfile\u003c/code\u003e,\n\u003ccode\u003epropagate_exceptions\u003c/code\u003e, and \u003ccode\u003etemplates_auto_reload\u003c/code\u003e properties on \u003ccode\u003eapp\u003c/code\u003e\nare removed.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eJSON_AS_ASCII\u003c/code\u003e, \u003ccode\u003eJSON_SORT_KEYS\u003c/code\u003e, \u003ccode\u003eJSONIFY_MIMETYPE\u003c/code\u003e, and\n\u003ccode\u003eJSONIFY_PRETTYPRINT_REGULAR\u003c/code\u003e config keys are removed.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eapp.before_first_request\u003c/code\u003e and \u003ccode\u003ebp.before_app_first_request\u003c/code\u003e decorators\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3205b53c7cf69d17fee49cac6b84978175b7dd73\"\u003e\u003ccode\u003e3205b53\u003c/code\u003e\u003c/a\u003e release version 2.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/9f9550247a2798b9dcc28081c15e266442f4e28a\"\u003e\u003ccode\u003e9f95502\u003c/code\u003e\u003c/a\u003e bump werkzeug 2.3.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/02736640095ed6d5a4a409a9658eaca373fd1d48\"\u003e\u003ccode\u003e0273664\u003c/code\u003e\u003c/a\u003e Update dispatch by path example (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5217\"\u003e#5217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/a887e179b8af6a9c582a7918f9f8499ab58032cc\"\u003e\u003ccode\u003ea887e17\u003c/code\u003e\u003c/a\u003e clean up\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/aa6d4c3e92bd11a7d449f49f524e54bbb88b89c0\"\u003e\u003ccode\u003eaa6d4c3\u003c/code\u003e\u003c/a\u003e update dispatch-by-path example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/826514b8eb18f6c314cf566630253d35c89e42c3\"\u003e\u003ccode\u003e826514b\u003c/code\u003e\u003c/a\u003e fix flake8 bugbear findings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/6d266f63633f5f127165d4ef836db14a59bbc106\"\u003e\u003ccode\u003e6d266f6\u003c/code\u003e\u003c/a\u003e Pass maxsplit via kwarg to re.split (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5215\"\u003e#5215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/17e146ad949b3d80438faf95e81b53c543cb50f5\"\u003e\u003ccode\u003e17e146a\u003c/code\u003e\u003c/a\u003e Pass maxsplit via kwarg to re.split\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/8a72b741616556b4f739ea79ab502c2d2038844a\"\u003e\u003ccode\u003e8a72b74\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5211\"\u003e#5211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/7255be9626ab56d81bc0ab86db939fcc1da9bca1\"\u003e\u003ccode\u003e7255be9\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/pallets/flask/compare/2.2.5...2.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask-caching` from 2.0.2 to 2.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets-eco/flask-caching/releases\"\u003eflask-caching's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.1\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/blob/v2.3.1/CHANGES.rst\"\u003ehttps://github.com/pallets-eco/flask-caching/blob/v2.3.1/CHANGES.rst\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.3.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/blob/v2.1.0/CHANGES.rst\"\u003ehttps://github.com/pallets-eco/flask-caching/blob/v2.1.0/CHANGES.rst\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.2.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/blob/v2.1.0/CHANGES.rst\"\u003ehttps://github.com/pallets-eco/flask-caching/blob/v2.1.0/CHANGES.rst\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.1.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/blob/v2.1.0/CHANGES.rst\"\u003ehttps://github.com/pallets-eco/flask-caching/blob/v2.1.0/CHANGES.rst\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/pallets-eco/flask-caching/blob/master/CHANGES.rst\"\u003eflask-caching's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-02-22\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRelax cachelib version to allow latest releases\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-05-04\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eresponse_hit_indication\u003c/code\u003e flag to \u003ccode\u003eCache.cached\u003c/code\u003e decorator for appending 'hit_cache' headers to responses, indicating cache hits.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.2.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop python 3.7 support\u003c/li\u003e\n\u003cli\u003epython 3.11 officially supported\u003c/li\u003e\n\u003cli\u003eFix issue causing \u003ccode\u003eargs_to_ignore\u003c/code\u003e to not work with \u003ccode\u003eflask_caching.Cache.memoize\u003c/code\u003e decorator when keyword arguments were used in the decorated function call\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-10-08\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix type signature in \u003ccode\u003eflask_caching.utils.make_template_fragment_key\u003c/code\u003e. :pr:\u003ccode\u003e430\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdded docs and example for make_cache_key\u003c/li\u003e\n\u003cli\u003esupport Flask 3\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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-eco/flask-caching/commit/e59bc040cd47cd2b43e501d636d43d442c50b3ff\"\u003e\u003ccode\u003ee59bc04\u003c/code\u003e\u003c/a\u003e release 2.3.1 (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-caching/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/commit/023491c1c44d03baafce2231d6532493bb945711\"\u003e\u003ccode\u003e023491c\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.10.0 to 1.11.1 in /requirements (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-caching/issues/580\"\u003e#580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/commit/b786b9f9b7521ece065d8e202700fe2d1c1d5fd4\"\u003e\u003ccode\u003eb786b9f\u003c/code\u003e\u003c/a\u003e Bump pytest from 8.2.0 to 8.3.2 in /requirements (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-caching/issues/582\"\u003e#582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/commit/20a8afdcb53da9725467e4ab2788cb9851f39c9c\"\u003e\u003ccode\u003e20a8afd\u003c/code\u003e\u003c/a\u003e Bump redis from 5.0.4 to 5.0.8 in /requirements (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-caching/issues/581\"\u003e#581\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/commit/33d673d89a644dba7716b65bf09e47046b33d6d6\"\u003e\u003ccode\u003e33d673d\u003c/code\u003e\u003c/a\u003e Bump tox from 4.15.0 to 4.16.0 in /requirements (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-caching/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/commit/3dddd9265879974d5e556704e44ef1c6cc09ce4d\"\u003e\u003ccode\u003e3dddd92\u003c/code\u003e\u003c/a\u003e Bump sphinx from 7.3.7 to 8.0.2 in /requirements (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-caching/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/commit/5dffcf336042beb929d30a05647798ee4b3de6ab\"\u003e\u003ccode\u003e5dffcf3\u003c/code\u003e\u003c/a\u003e Bump pytest-asyncio from 0.23.7 to 0.23.8 in /requirements (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-caching/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/commit/b44676c4bf341493cd51cde7d3f82d1fcd7a0f6a\"\u003e\u003ccode\u003eb44676c\u003c/code\u003e\u003c/a\u003e Bump certifi from 2024.2.2 to 2024.7.4 in /requirements (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-caching/issues/578\"\u003e#578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/commit/8d3e312615e2c2740f97e225e639bc61c8818edb\"\u003e\u003ccode\u003e8d3e312\u003c/code\u003e\u003c/a\u003e Bump types-redis from 4.6.0.20240425 to 4.6.0.20240726 in /requirements (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-caching/issues/584\"\u003e#584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/commit/7a14296cf2f9c72f760297fbc4d531b5c6c1dd46\"\u003e\u003ccode\u003e7a14296\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.1 to 2.2.2 in /requirements (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-caching/issues/573\"\u003e#573\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets-eco/flask-caching/compare/v2.0.2...v2.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prometheus-client` from 0.17.1 to 0.24.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/prometheus/client_python/releases\"\u003eprometheus-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.24.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Django] Pass correct registry to MultiProcessCollector by \u003ca href=\"https://github.com/jelly\"\u003e\u003ccode\u003e@​jelly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1152\"\u003eprometheus/client_python#1152\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.24.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an AIOHTTP exporter by \u003ca href=\"https://github.com/Lexicality\"\u003e\u003ccode\u003e@​Lexicality\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1139\"\u003eprometheus/client_python#1139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd remove_matching() method for metric label deletion by \u003ca href=\"https://github.com/hazel-shen\"\u003e\u003ccode\u003e@​hazel-shen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1121\"\u003eprometheus/client_python#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(multiprocess): avoid double-building child metric names (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1035\"\u003e#1035\u003c/a\u003e) by \u003ca href=\"https://github.com/hazel-shen\"\u003e\u003ccode\u003e@​hazel-shen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1146\"\u003eprometheus/client_python#1146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't interleave histogram metrics in multi-process collector by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1148\"\u003eprometheus/client_python#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax registry type annotations for exposition by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1149\"\u003eprometheus/client_python#1149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded compression support in pushgateway by \u003ca href=\"https://github.com/ritesh-avesha\"\u003e\u003ccode\u003e@​ritesh-avesha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1144\"\u003eprometheus/client_python#1144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django exporter (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1088\"\u003e#1088\u003c/a\u003e) by \u003ca href=\"https://github.com/Chadys\"\u003e\u003ccode\u003e@​Chadys\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1143\"\u003eprometheus/client_python#1143\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.23.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use tuples instead of packaging Version by \u003ca href=\"https://github.com/efiop\"\u003e\u003ccode\u003e@​efiop\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1136\"\u003eprometheus/client_python#1136\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/efiop\"\u003e\u003ccode\u003e@​efiop\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1136\"\u003eprometheus/client_python#1136\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.23.0...v0.23.1\"\u003ehttps://github.com/prometheus/client_python/compare/v0.23.0...v0.23.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUTF-8 Content Negotiation by \u003ca href=\"https://github.com/ywwg\"\u003e\u003ccode\u003e@​ywwg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1102\"\u003eprometheus/client_python#1102\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe include test data by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1113\"\u003eprometheus/client_python#1113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove parser performance by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1117\"\u003eprometheus/client_python#1117\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support to \u003ccode\u003ewrite_to_textfile\u003c/code\u003e for custom tmpdir by \u003ca href=\"https://github.com/aadityadhruv\"\u003e\u003ccode\u003e@​aadityadhruv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1115\"\u003eprometheus/client_python#1115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOM text exposition for NH by \u003ca href=\"https://github.com/vesari\"\u003e\u003ccode\u003e@​vesari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1087\"\u003eprometheus/client_python#1087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix bug which caused metric publishing to not accept query string parameters in ASGI app by \u003ca href=\"https://github.com/hacksparr0w\"\u003e\u003ccode\u003e@​hacksparr0w\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1125\"\u003eprometheus/client_python#1125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit native histograms only when OM 2.0.0 is requested by \u003ca href=\"https://github.com/vesari\"\u003e\u003ccode\u003e@​vesari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1128\"\u003eprometheus/client_python#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: remove space after comma in openmetrics exposition by \u003ca href=\"https://github.com/theSuess\"\u003e\u003ccode\u003e@​theSuess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1132\"\u003eprometheus/client_python#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue parsing double spaces after # HELP/# TYPE by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1134\"\u003eprometheus/client_python#1134\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/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1113\"\u003eprometheus/client_python#1113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aadityadhruv\"\u003e\u003ccode\u003e@​aadityadhruv\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1115\"\u003eprometheus/client_python#1115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hacksparr0w\"\u003e\u003ccode\u003e@​hacksparr0w\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1125\"\u003eprometheus/client_python#1125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theSuess\"\u003e\u003ccode\u003e@​theSuess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1132\"\u003eprometheus/client_python#1132\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.22.1...v0.23.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.22.1...v0.23.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.22.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBugFix: Skip validating and parsing comment lines early (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1108\"\u003e#1108\u003c/a\u003e) by \u003ca href=\"https://github.com/wissamir\"\u003e\u003ccode\u003e@​wissamir\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1109\"\u003eprometheus/client_python#1109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse License Expressions in pyproject.toml by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1111\"\u003eprometheus/client_python#1111\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.22.0...v0.22.1\"\u003ehttps://github.com/prometheus/client_python/compare/v0.22.0...v0.22.1\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/prometheus/client_python/commit/f417f6ea8f058165a1934e368fed245e91aafc14\"\u003e\u003ccode\u003ef417f6e\u003c/code\u003e\u003c/a\u003e Release 0.24.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/6f0e967c1f7a408b75861d6833a8d303874be95d\"\u003e\u003ccode\u003e6f0e967\u003c/code\u003e\u003c/a\u003e Pass correct registry to MultiProcessCollector (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1152\"\u003e#1152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/c5024d310fbfcba45a5e9db62e337a3a7930ea16\"\u003e\u003ccode\u003ec5024d3\u003c/code\u003e\u003c/a\u003e Release 0.24.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/e1cdc203b1cf5f15c7b9a64d79fccc7907a62ca3\"\u003e\u003ccode\u003ee1cdc20\u003c/code\u003e\u003c/a\u003e Add Django exporter (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1088\"\u003e#1088\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1143\"\u003e#1143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/7b9959209492c06968785c66bc6ea2316d156f91\"\u003e\u003ccode\u003e7b99592\u003c/code\u003e\u003c/a\u003e Added compression support in pushgateway (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1144\"\u003e#1144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/13df12421e1ba9c621246b9084229e24fda4074e\"\u003e\u003ccode\u003e13df124\u003c/code\u003e\u003c/a\u003e Relax registry type annotations for exposition (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1149\"\u003e#1149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/a264ec0d85600decfb0681d00ed1566186bebfb3\"\u003e\u003ccode\u003ea264ec0\u003c/code\u003e\u003c/a\u003e Don't interleave histogram metrics in multi-process collector (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1148\"\u003e#1148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/e8f8bae6554de11ebffffcc878ab19abd67528f2\"\u003e\u003ccode\u003ee8f8bae\u003c/code\u003e\u003c/a\u003e fix(multiprocess): avoid double-building child metric names (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1035\"\u003e#1035\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1146\"\u003e#1146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/1783ca87acbed1d45ebaa124b7b22244f9c9c2e8\"\u003e\u003ccode\u003e1783ca8\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1142\"\u003e#1142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/378510b8ae91d23383cd1c7e0be180b374a1c84c\"\u003e\u003ccode\u003e378510b\u003c/code\u003e\u003c/a\u003e Add remove_matching() method for metric label deletion (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1121\"\u003e#1121\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.17.1...v0.24.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyjwt` from 2.6.0 to 2.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jpadilla/pyjwt/releases\"\u003epyjwt's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.11.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed type error in comment by \u003ca href=\"https://github.com/shuhaib-aot\"\u003e\u003ccode\u003e@​shuhaib-aot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1026\"\u003ejpadilla/pyjwt#1026\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/jpadilla/pyjwt/pull/1018\"\u003ejpadilla/pyjwt#1018\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/jpadilla/pyjwt/pull/1033\"\u003ejpadilla/pyjwt#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake note of use of leeway with nbf by \u003ca href=\"https://github.com/djw8605\"\u003e\u003ccode\u003e@​djw8605\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1034\"\u003ejpadilla/pyjwt#1034\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/jpadilla/pyjwt/pull/1035\"\u003ejpadilla/pyjwt#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/964\"\u003e#964\u003c/a\u003e: Validate key against allowed types for Algorithm family by \u003ca href=\"https://github.com/pachewise\"\u003e\u003ccode\u003e@​pachewise\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/985\"\u003ejpadilla/pyjwt#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFeat \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/1024\"\u003e#1024\u003c/a\u003e: Add iterator for PyJWKSet by \u003ca href=\"https://github.com/pachewise\"\u003e\u003ccode\u003e@​pachewise\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1041\"\u003ejpadilla/pyjwt#1041\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/1039\"\u003e#1039\u003c/a\u003e: Add iss, issuer type checks by \u003ca href=\"https://github.com/pachewise\"\u003e\u003ccode\u003e@​pachewise\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1040\"\u003ejpadilla/pyjwt#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/660\"\u003e#660\u003c/a\u003e: Improve typing/logic for \u003ccode\u003eoptions\u003c/code\u003e in decode, decode_complete; Improve docs by \u003ca href=\"https://github.com/pachewise\"\u003e\u003ccode\u003e@​pachewise\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1045\"\u003ejpadilla/pyjwt#1045\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/jpadilla/pyjwt/pull/1042\"\u003ejpadilla/pyjwt#1042\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/jpadilla/pyjwt/pull/1052\"\u003ejpadilla/pyjwt#1052\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/jpadilla/pyjwt/pull/1053\"\u003ejpadilla/pyjwt#1053\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/1022\"\u003e#1022\u003c/a\u003e: Map \u003ccode\u003ealgorithm=None\u003c/code\u003e to \u0026quot;none\u0026quot; by \u003ca href=\"https://github.com/qqii\"\u003e\u003ccode\u003e@​qqii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1056\"\u003ejpadilla/pyjwt#1056\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/jpadilla/pyjwt/pull/1055\"\u003ejpadilla/pyjwt#1055\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/jpadilla/pyjwt/pull/1058\"\u003ejpadilla/pyjwt#1058\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/jpadilla/pyjwt/pull/1060\"\u003ejpadilla/pyjwt#1060\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/jpadilla/pyjwt/pull/1061\"\u003ejpadilla/pyjwt#1061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/1047\"\u003e#1047\u003c/a\u003e: Correct \u003ccode\u003ePyJWKClient.get_signing_key_from_jwt\u003c/code\u003e annotation  by \u003ca href=\"https://github.com/khvn26\"\u003e\u003ccode\u003e@​khvn26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1048\"\u003ejpadilla/pyjwt#1048\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/jpadilla/pyjwt/pull/1062\"\u003ejpadilla/pyjwt#1062\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed doc string typo in _validate_jti() function \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/1063\"\u003e#1063\u003c/a\u003e by \u003ca href=\"https://github.com/kuldeepkhatke\"\u003e\u003ccode\u003e@​kuldeepkhatke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1064\"\u003ejpadilla/pyjwt#1064\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/jpadilla/pyjwt/pull/1065\"\u003ejpadilla/pyjwt#1065\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate SECURITY.md by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1057\"\u003ejpadilla/pyjwt#1057\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTyping fix: use \u003ccode\u003efloat\u003c/code\u003e instead of \u003ccode\u003eint\u003c/code\u003e for \u003ccode\u003elifespan\u003c/code\u003e and \u003ccode\u003etimeout\u003c/code\u003e by \u003ca href=\"https://github.com/nikitagashkov\"\u003e\u003ccode\u003e@​nikitagashkov\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1068\"\u003ejpadilla/pyjwt#1068\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/jpadilla/pyjwt/pull/1067\"\u003ejpadilla/pyjwt#1067\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/jpadilla/pyjwt/pull/1071\"\u003ejpadilla/pyjwt#1071\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/jpadilla/pyjwt/pull/1076\"\u003ejpadilla/pyjwt#1076\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix TYP header documentation by \u003ca href=\"https://github.com/fobiasmog\"\u003e\u003ccode\u003e@​fobiasmog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1046\"\u003ejpadilla/pyjwt#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edoc: Document claims sub and jti by \u003ca href=\"https://github.com/cleder\"\u003e\u003ccode\u003e@​cleder\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1088\"\u003ejpadilla/pyjwt#1088\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/jpadilla/pyjwt/pull/1077\"\u003ejpadilla/pyjwt#1077\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1089\"\u003ejpadilla/pyjwt#1089\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/stale from 8 to 10 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/jpadilla/pyjwt/pull/1090\"\u003ejpadilla/pyjwt#1090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 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/jpadilla/pyjwt/pull/1083\"\u003ejpadilla/pyjwt#1083\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/jpadilla/pyjwt/pull/1091\"\u003ejpadilla/pyjwt#1091\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/jpadilla/pyjwt/pull/1093\"\u003ejpadilla/pyjwt#1093\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/jpadilla/pyjwt/pull/1096\"\u003ejpadilla/pyjwt#1096\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve package build warnings by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1105\"\u003ejpadilla/pyjwt#1105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport Python 3.14, and test against PyPy 3.10+ by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1104\"\u003ejpadilla/pyjwt#1104\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix a \u003ccode\u003eSyntaxWarning\u003c/code\u003e caused by invalid escape sequences by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1103\"\u003ejpadilla/pyjwt#1103\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize CHANGELOG links to PRs by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1110\"\u003ejpadilla/pyjwt#1110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate from \u003ccode\u003epep517\u003c/code\u003e, which is deprecated, to \u003ccode\u003ebuild\u003c/code\u003e by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode...\n\n_Description has been truncated_","html_url":"https://github.com/CybercentreCanada/howler/pull/171","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/CybercentreCanada%2Fhowler/issues/171","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/171/packages"},{"uuid":"3881829355","node_id":"PR_kwDOJpUnI87AtFcc","number":122,"state":"closed","title":"Bump the poetry-dependencies group across 1 directory with 79 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-01T11:05:21.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-01T11:10:59.000Z","updated_at":"2026-03-01T11:05:23.000Z","time_to_close":2418862,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"poetry-dependencies","update_count":79,"packages":[{"name":"black","old_version":"25.9.0","new_version":"26.1.0","repository_url":"https://github.com/psf/black"},{"name":"coverage","old_version":"7.10.7","new_version":"7.13.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"furo","old_version":"2025.9.25","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"mypy","old_version":"1.18.2","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.3.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"ruff","old_version":"0.13.3","new_version":"0.14.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest","old_version":"8.4.2","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"sphinx-click","old_version":"6.1.0","new_version":"6.2.0","repository_url":"https://github.com/click-contrib/sphinx-click"},{"name":"matplotlib","old_version":"3.10.6","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"deptry","old_version":"0.23.1","new_version":"0.24.0","repository_url":"https://github.com/fpgmaas/deptry"},{"name":"pyarrow","old_version":"21.0.0","new_version":"23.0.0","repository_url":"https://github.com/apache/arrow"},{"name":"pandas-stubs","old_version":"2.3.2.250926","new_version":"2.3.3.260113","repository_url":"https://github.com/pandas-dev/pandas-stubs"},{"name":"anyio","old_version":"4.11.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"async-lru","old_version":"2.0.5","new_version":"2.1.0","repository_url":"https://github.com/aio-libs/async-lru"},{"name":"beautifulsoup4","old_version":"4.14.2","new_version":"4.14.3"},{"name":"bleach","old_version":"6.2.0","new_version":"6.3.0","repository_url":"https://github.com/mozilla/bleach"},{"name":"certifi","old_version":"2025.10.5","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cfgv","old_version":"3.4.0","new_version":"3.5.0","repository_url":"https://github.com/asottile/cfgv"},{"name":"charset-normalizer","old_version":"3.4.3","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.0","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"debugpy","old_version":"1.8.17","new_version":"1.8.20","repository_url":"https://github.com/microsoft/debugpy"},{"name":"exceptiongroup","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"filelock","old_version":"3.19.1","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.60.1","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"identify","old_version":"2.6.15","new_version":"2.6.16","repository_url":"https://github.com/pre-commit/identify"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"ipykernel","old_version":"6.30.1","new_version":"7.1.0","repository_url":"https://github.com/ipython/ipykernel"},{"name":"ipython","old_version":"8.37.0","new_version":"8.38.0","repository_url":"https://github.com/ipython/ipython"},{"name":"ipywidgets","old_version":"8.1.7","new_version":"8.1.8","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"json5","old_version":"0.12.1","new_version":"0.13.0","repository_url":"https://github.com/dpranke/pyjson5"},{"name":"jsonschema","old_version":"4.25.1","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jupyter-client","old_version":"8.6.3","new_version":"8.8.0","repository_url":"https://github.com/jupyter/jupyter_client"},{"name":"jupyter-core","old_version":"5.8.1","new_version":"5.9.1","repository_url":"https://github.com/jupyter/jupyter_core"},{"name":"jupyter-server-terminals","old_version":"0.5.3","new_version":"0.5.4","repository_url":"https://github.com/jupyter-server/jupyter_server_terminals"},{"name":"jupyterlab","old_version":"4.4.9","new_version":"4.5.3","repository_url":"https://github.com/jupyterlab/jupyterlab"},{"name":"jupyterlab-widgets","old_version":"3.0.15","new_version":"3.0.16","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"lark","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/lark-parser/lark"},{"name":"matplotlib-inline","old_version":"0.1.7","new_version":"0.2.1","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"mistune","old_version":"3.1.4","new_version":"3.2.0","repository_url":"https://github.com/lepture/mistune"},{"name":"nbclient","old_version":"0.10.2","new_version":"0.10.4","repository_url":"https://github.com/jupyter/nbclient"},{"name":"nbconvert","old_version":"7.16.6","new_version":"7.17.0","repository_url":"https://github.com/jupyter/nbconvert"},{"name":"nodeenv","old_version":"1.9.1","new_version":"1.10.0","repository_url":"https://github.com/ekalinin/nodeenv"},{"name":"numba","old_version":"0.62.1","new_version":"0.63.1","repository_url":"https://github.com/numba/numba"},{"name":"numexpr","old_version":"2.13.1","new_version":"2.14.1","repository_url":"https://github.com/pydata/numexpr"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pillow","old_version":"11.3.0","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.4.0","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prometheus-client","old_version":"0.23.1","new_version":"0.24.1","repository_url":"https://github.com/prometheus/client_python"},{"name":"psutil","old_version":"7.1.0","new_version":"7.2.2","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pycparser","old_version":"2.23","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pyparsing","old_version":"3.2.5","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"roman-numerals-py","old_version":"3.1.0","new_version":"4.1.0","repository_url":"https://github.com/AA-Turner/roman-numerals"},{"name":"rpds-py","old_version":"0.27.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"ruamel-yaml","old_version":"0.18.15","new_version":"0.19.1"},{"name":"send2trash","old_version":"1.8.3","new_version":"2.1.0","repository_url":"https://github.com/arsenetar/send2trash"},{"name":"setuptools","old_version":"80.9.0","new_version":"80.10.2","repository_url":"https://github.com/pypa/setuptools"},{"name":"soupsieve","old_version":"2.8","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"0.48.0","new_version":"0.52.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"tomli","old_version":"2.2.1","new_version":"2.4.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"tornado","old_version":"6.5.2","new_version":"6.5.4","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"types-pytz","old_version":"2025.2.0.20250809","new_version":"2025.2.0.20251108","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"tzdata","old_version":"2025.2","new_version":"2025.3","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.5.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.37.0","new_version":"0.40.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"virtualenv","old_version":"20.34.0","new_version":"20.36.1","repository_url":"https://github.com/pypa/virtualenv"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wcwidth","old_version":"0.2.14","new_version":"0.5.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"webcolors","old_version":"24.11.1","new_version":"25.10.0","repository_url":"https://github.com/ubernostrum/webcolors"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"websockets","old_version":"15.0.1","new_version":"16.0","repository_url":"https://github.com/python-websockets/websockets"},{"name":"widgetsnbextension","old_version":"4.0.14","new_version":"4.0.15"}],"path":null,"ecosystem":"pip"},"body":"Bumps the poetry-dependencies group with 75 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [black](https://github.com/psf/black) | `25.9.0` | `26.1.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.10.7` | `7.13.2` |\n| [furo](https://github.com/pradyunsg/furo) | `2025.9.25` | `2025.12.19` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `1.19.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.3.0` | `4.5.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.13.3` | `0.14.14` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.2` | `9.0.2` |\n| [sphinx-click](https://github.com/click-contrib/sphinx-click) | `6.1.0` | `6.2.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.6` | `3.10.8` |\n| [deptry](https://github.com/fpgmaas/deptry) | `0.23.1` | `0.24.0` |\n| [pyarrow](https://github.com/apache/arrow) | `21.0.0` | `23.0.0` |\n| [pandas-stubs](https://github.com/pandas-dev/pandas-stubs) | `2.3.2.250926` | `2.3.3.260113` |\n| [anyio](https://github.com/agronholm/anyio) | `4.11.0` | `4.12.1` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [async-lru](https://github.com/aio-libs/async-lru) | `2.0.5` | `2.1.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.14.2` | `4.14.3` |\n| [bleach](https://github.com/mozilla/bleach) | `6.2.0` | `6.3.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.10.5` | `2026.1.4` |\n| [cfgv](https://github.com/asottile/cfgv) | `3.4.0` | `3.5.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.3` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.3.0` | `8.3.1` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.17` | `1.8.20` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.3.0` | `1.3.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.19.1` | `3.20.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.1` | `4.61.1` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.15` | `2.6.16` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [ipykernel](https://github.com/ipython/ipykernel) | `6.30.1` | `7.1.0` |\n| [ipython](https://github.com/ipython/ipython) | `8.37.0` | `8.38.0` |\n| [ipywidgets](https://github.com/jupyter-widgets/ipywidgets) | `8.1.7` | `8.1.8` |\n| [json5](https://github.com/dpranke/pyjson5) | `0.12.1` | `0.13.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.1` | `4.26.0` |\n| [jupyter-client](https://github.com/jupyter/jupyter_client) | `8.6.3` | `8.8.0` |\n| [jupyter-core](https://github.com/jupyter/jupyter_core) | `5.8.1` | `5.9.1` |\n| [jupyter-server-terminals](https://github.com/jupyter-server/jupyter_server_terminals) | `0.5.3` | `0.5.4` |\n| [jupyterlab](https://github.com/jupyterlab/jupyterlab) | `4.4.9` | `4.5.3` |\n| [jupyterlab-widgets](https://github.com/jupyter-widgets/ipywidgets) | `3.0.15` | `3.0.16` |\n| [lark](https://github.com/lark-parser/lark) | `1.3.0` | `1.3.1` |\n| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.1.7` | `0.2.1` |\n| [mistune](https://github.com/lepture/mistune) | `3.1.4` | `3.2.0` |\n| [nbclient](https://github.com/jupyter/nbclient) | `0.10.2` | `0.10.4` |\n| [nbconvert](https://github.com/jupyter/nbconvert) | `7.16.6` | `7.17.0` |\n| [nodeenv](https://github.com/ekalinin/nodeenv) | `1.9.1` | `1.10.0` |\n| [numba](https://github.com/numba/numba) | `0.62.1` | `0.63.1` |\n| [numexpr](https://github.com/pydata/numexpr) | `2.13.1` | `2.14.1` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.3.0` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.4.0` | `4.5.1` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.23.1` | `0.24.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.1.0` | `7.2.2` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.23` | `3.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.5` | `3.3.2` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [roman-numerals-py](https://github.com/AA-Turner/roman-numerals) | `3.1.0` | `4.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.27.1` | `0.30.0` |\n| ruamel-yaml | `0.18.15` | `0.19.1` |\n| [send2trash](https://github.com/arsenetar/send2trash) | `1.8.3` | `2.1.0` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.9.0` | `80.10.2` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.8` | `2.8.3` |\n| [starlette](https://github.com/Kludex/starlette) | `0.48.0` | `0.52.1` |\n| [tomli](https://github.com/hukkin/tomli) | `2.2.1` | `2.4.0` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.2` | `6.5.4` |\n| [types-pytz](https://github.com/typeshed-internal/stub_uploader) | `2025.2.0.20250809` | `2025.2.0.20251108` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.5.0` | `2.6.3` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.37.0` | `0.40.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.34.0` | `20.36.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.14` | `0.5.3` |\n| [webcolors](https://github.com/ubernostrum/webcolors) | `24.11.1` | `25.10.0` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [websockets](https://github.com/python-websockets/websockets) | `15.0.1` | `16.0` |\n| [widgetsnbextension](http://jupyter.org) | `4.0.14` | `4.0.15` |\n\n\nUpdates `black` from 25.9.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.1.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cp\u003eIntroduces the 2026 stable style (\u003ca href=\"https://redirect.github.com/psf/black/issues/4892\"\u003e#4892\u003c/a\u003e), stabilizing the following changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ealways_one_newline_after_import\u003c/code\u003e: Always force one blank line after import\nstatements, except when the line after the import is a comment or an import statement\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4489\"\u003e#4489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_fmt_skip_in_one_liners\u003c/code\u003e: Fix \u003ccode\u003e# fmt: skip\u003c/code\u003e behavior on one-liner declarations,\nsuch as \u003ccode\u003edef foo(): return \u0026quot;mock\u0026quot; # fmt: skip\u003c/code\u003e, where previously the declaration would\nhave been incorrectly collapsed (\u003ca href=\"https://redirect.github.com/psf/black/issues/4800\"\u003e#4800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_module_docstring_detection\u003c/code\u003e: Fix module docstrings being treated as normal\nstrings if preceded by comments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4764\"\u003e#4764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_type_expansion_split\u003c/code\u003e: Fix type expansions split in generic functions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emultiline_string_handling\u003c/code\u003e: Make expressions involving multiline strings more compact\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/1879\"\u003e#1879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enormalize_cr_newlines\u003c/code\u003e: Add \u003ccode\u003e\\r\u003c/code\u003e style newlines to the potential newlines to\nnormalize file newlines both from and to (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eremove_parens_around_except_types\u003c/code\u003e: Remove parentheses around multiple exception\ntypes in \u003ccode\u003eexcept\u003c/code\u003e and \u003ccode\u003eexcept*\u003c/code\u003e without \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\u003e\u003ccode\u003eremove_parens_from_assignment_lhs\u003c/code\u003e: Remove unnecessary parentheses from the left-hand\nside of assignments while preserving magic trailing commas and intentional multiline\nformatting (\u003ca href=\"https://redirect.github.com/psf/black/issues/4865\"\u003e#4865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estandardize_type_comments\u003c/code\u003e: Format type comments which have zero or more spaces\nbetween \u003ccode\u003e#\u003c/code\u003e and \u003ccode\u003etype:\u003c/code\u003e or between \u003ccode\u003etype:\u003c/code\u003e and value to \u003ccode\u003e# type: (value)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe following change was not in any previous stable release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRegenerated the \u003ccode\u003e_width_table.py\u003c/code\u003e and added tests for the Khmer language (\u003ca href=\"https://redirect.github.com/psf/black/issues/4253\"\u003e#4253\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis release alo bumps \u003ccode\u003epathspec\u003c/code\u003e to v1 and fixes inconsistencies with Git's\n\u003ccode\u003e.gitignore\u003c/code\u003e logic (\u003ca href=\"https://redirect.github.com/psf/black/issues/4958\"\u003e#4958\u003c/a\u003e). Now, files will be ignored if a pattern matches them, even\nif the parent directory is directly unignored. For example, Black would previously\nformat \u003ccode\u003eexclude/not_this/foo.py\u003c/code\u003e with this \u003ccode\u003e.gitignore\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eexclude/\n!exclude/not_this/\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNow, \u003ccode\u003eexclude/not_this/foo.py\u003c/code\u003e will remain ignored. To ensure \u003ccode\u003eexclude/not_this/\u003c/code\u003e and\nall of it's children are included in formatting (and in Git), use this \u003ccode\u003e.gitignore\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e*/exclude/*\n!*/exclude/not_this/\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThis new behavior matches Git. The leading \u003ccode\u003e*/\u003c/code\u003e are only necessary if you wish to ignore\nmatching subdirectories (like the previous behavior did), and not just matching root\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/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.1.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cp\u003eIntroduces the 2026 stable style (\u003ca href=\"https://redirect.github.com/psf/black/issues/4892\"\u003e#4892\u003c/a\u003e), stabilizing the following changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ealways_one_newline_after_import\u003c/code\u003e: Always force one blank line after import\nstatements, except when the line after the import is a comment or an import statement\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4489\"\u003e#4489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_fmt_skip_in_one_liners\u003c/code\u003e: Fix \u003ccode\u003e# fmt: skip\u003c/code\u003e behavior on one-liner declarations,\nsuch as \u003ccode\u003edef foo(): return \u0026quot;mock\u0026quot; # fmt: skip\u003c/code\u003e, where previously the declaration would\nhave been incorrectly collapsed (\u003ca href=\"https://redirect.github.com/psf/black/issues/4800\"\u003e#4800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_module_docstring_detection\u003c/code\u003e: Fix module docstrings being treated as normal\nstrings if preceded by comments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4764\"\u003e#4764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_type_expansion_split\u003c/code\u003e: Fix type expansions split in generic functions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emultiline_string_handling\u003c/code\u003e: Make expressions involving multiline strings more compact\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/1879\"\u003e#1879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enormalize_cr_newlines\u003c/code\u003e: Add \u003ccode\u003e\\r\u003c/code\u003e style newlines to the potential newlines to\nnormalize file newlines both from and to (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eremove_parens_around_except_types\u003c/code\u003e: Remove parentheses around multiple exception\ntypes in \u003ccode\u003eexcept\u003c/code\u003e and \u003ccode\u003eexcept*\u003c/code\u003e without \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\u003e\u003ccode\u003eremove_parens_from_assignment_lhs\u003c/code\u003e: Remove unnecessary parentheses from the left-hand\nside of assignments while preserving magic trailing commas and intentional multiline\nformatting (\u003ca href=\"https://redirect.github.com/psf/black/issues/4865\"\u003e#4865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estandardize_type_comments\u003c/code\u003e: Format type comments which have zero or more spaces\nbetween \u003ccode\u003e#\u003c/code\u003e and \u003ccode\u003etype:\u003c/code\u003e or between \u003ccode\u003etype:\u003c/code\u003e and value to \u003ccode\u003e# type: (value)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe following change was not in any previous stable release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRegenerated the \u003ccode\u003e_width_table.py\u003c/code\u003e and added tests for the Khmer language (\u003ca href=\"https://redirect.github.com/psf/black/issues/4253\"\u003e#4253\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis release alo bumps \u003ccode\u003epathspec\u003c/code\u003e to v1 and fixes inconsistencies with Git's\n\u003ccode\u003e.gitignore\u003c/code\u003e logic (\u003ca href=\"https://redirect.github.com/psf/black/issues/4958\"\u003e#4958\u003c/a\u003e). Now, files will be ignored if a pattern matches them, even\nif the parent directory is directly unignored. For example, Black would previously\nformat \u003ccode\u003eexclude/not_this/foo.py\u003c/code\u003e with this \u003ccode\u003e.gitignore\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eexclude/\n!exclude/not_this/\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNow, \u003ccode\u003eexclude/not_this/foo.py\u003c/code\u003e will remain ignored. To ensure \u003ccode\u003eexclude/not_this/\u003c/code\u003e and\nall of it's children are included in formatting (and in Git), use this \u003ccode\u003e.gitignore\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e*/exclude/*\n!*/exclude/not_this/\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThis new behavior matches Git. The leading \u003ccode\u003e*/\u003c/code\u003e are only necessary if you wish to ignore\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/psf/black/commit/6305bf1ae645ab7541be4f5028a86239316178eb\"\u003e\u003ccode\u003e6305bf1\u003c/code\u003e\u003c/a\u003e Prepare 2026.1.0 release (\u003ca href=\"https://redirect.github.com/psf/black/issues/4892\"\u003e#4892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/e71305bee302f7f9016b228361e5ae69669dca7b\"\u003e\u003ccode\u003ee71305b\u003c/code\u003e\u003c/a\u003e Bump pypa/cibuildwheel from 3.3.0 to 3.3.1 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4961\"\u003e#4961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/21a2a8c2b1d0c8d47bc00cc59591470f6a9e2307\"\u003e\u003ccode\u003e21a2a8c\u003c/code\u003e\u003c/a\u003e Fix Shutdown multiprocessing Manager in schedule_formatting (\u003ca href=\"https://redirect.github.com/psf/black/issues/4952\"\u003e#4952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/e3146cea4245fcee29d007cb45d9faaf63271586\"\u003e\u003ccode\u003ee3146ce\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4919\"\u003e#4919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/fe1fbc4fdfa03fa1d460f975b8aca77e4b4f1a4a\"\u003e\u003ccode\u003efe1fbc4\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4923\"\u003e#4923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/2b4b7fcfe00bb0d99322e07e87fc2f0992f7a4d8\"\u003e\u003ccode\u003e2b4b7fc\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4922\"\u003e#4922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/d745be69bfa9d85ec2ef6e5f9b7ec7e253b5e8ab\"\u003e\u003ccode\u003ed745be6\u003c/code\u003e\u003c/a\u003e docs: document --force-exclude for pre-commit workflows (\u003ca href=\"https://redirect.github.com/psf/black/issues/4957\"\u003e#4957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/b41acd6ebbe76e18b49286166924f73f01c3fd02\"\u003e\u003ccode\u003eb41acd6\u003c/code\u003e\u003c/a\u003e Various CI and doc refactors (\u003ca href=\"https://redirect.github.com/psf/black/issues/4928\"\u003e#4928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/6f43612766da4a2f275b575af0802c3e73b6ed83\"\u003e\u003ccode\u003e6f43612\u003c/code\u003e\u003c/a\u003e Handle pathspec v1 changes (\u003ca href=\"https://redirect.github.com/psf/black/issues/4958\"\u003e#4958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/200c550aff44372f801a6d826a361cb26f45a504\"\u003e\u003ccode\u003e200c550\u003c/code\u003e\u003c/a\u003e Bump furo from 2025.9.25 to 2025.12.19 in /docs (\u003ca href=\"https://redirect.github.com/psf/black/issues/4933\"\u003e#4933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/25.9.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.10.7 to 7.13.2\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.2 — 2026-01-25\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: when Python is installed via symlinks, for example with Homebrew, the\nstandard library files could be incorrectly included in coverage reports.\nThis is now fixed, closing \u003ccode\u003eissue 2115\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: if a data file is created with no read permissions, the combine step\nwould fail completely. Now a warning is issued and the file is skipped.\nCloses \u003ccode\u003eissue 2117\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2115: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2115\"\u003ecoveragepy/coveragepy#2115\u003c/a\u003e\n.. _issue 2117: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2117\"\u003ecoveragepy/coveragepy#2117\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-1:\u003c/p\u003e\n\u003ch2\u003eVersion 7.13.1 — 2025-12-28\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded: the JSON report now includes a \u003ccode\u003e\u0026quot;start_line\u0026quot;\u003c/code\u003e key for function and\nclass regions, indicating the first line of the region in the source. Closes\n\u003ccode\u003eissue 2110\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded: The \u003ccode\u003edebug data\u003c/code\u003e command now takes file names as arguments on the\ncommand line, so you can inspect specific data files without needing to set\nthe \u003ccode\u003eCOVERAGE_FILE\u003c/code\u003e environment variable.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the JSON report used to report module docstrings as executed lines,\nwhich no other report did, as described in \u003ccode\u003eissue 2105\u003c/code\u003e_. This is now fixed,\nthanks to Jianrong Zhao.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: coverage.py uses a more disciplined approach to detecting where\nthird-party code is installed, and avoids measuring it. This shouldn't change\nany behavior. If you find that it does, please get in touch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerformance: data files that will be combined now record their hash as part\nof the file name. This lets us skip duplicate data more quickly, speeding the\ncombining step.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDocs: added a section explaining more about what is considered a missing\nbranch and how it is reported: :ref:\u003ccode\u003ebranch_explain\u003c/code\u003e, as requested in \u003ccode\u003eissue 1597\u003c/code\u003e\u003cem\u003e. Thanks to \u003ccode\u003eAyisha Mohammed \u0026lt;pull 2092_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTests: the test suite misunderstood what core was being tested if\n\u003ccode\u003eCOVERAGE_CORE\u003c/code\u003e wasn't set on 3.14+. This is now fixed, closing \u003ccode\u003eissue 2109\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1597: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1597\"\u003ecoveragepy/coveragepy#1597\u003c/a\u003e\n.. _pull 2092: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2092\"\u003ecoveragepy/coveragepy#2092\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/coveragepy/coveragepy/commit/513e97162536cb94aeb94ed3cbe487ca64d13e07\"\u003e\u003ccode\u003e513e971\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/27a8230cf0ef73abca824d2a8622235d9ad8ab96\"\u003e\u003ccode\u003e27a8230\u003c/code\u003e\u003c/a\u003e docs: prep for 7.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/27d8daac216ffef80276515b22cf679f9fabc422\"\u003e\u003ccode\u003e27d8daa\u003c/code\u003e\u003c/a\u003e refactor: plural does more\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a2f248cf095fc49d3599c39befdea6a5552ccd23\"\u003e\u003ccode\u003ea2f248c\u003c/code\u003e\u003c/a\u003e fix: stdlib might be through a symlink. \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2115\"\u003e#2115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/bc52a22953759f71c291d31e7d17faf9903c0667\"\u003e\u003ccode\u003ebc52a22\u003c/code\u003e\u003c/a\u003e debug: re-organize Matchers to show more of what they do\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f338d816ba7fcd23934a9397d15450593f0f20d9\"\u003e\u003ccode\u003ef338d81\u003c/code\u003e\u003c/a\u003e debug: build is a tuple, don't show it on two lines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/92020e469ab6c80cbe24786d0250a571d5f569cf\"\u003e\u003ccode\u003e92020e4\u003c/code\u003e\u003c/a\u003e refactor(test): convert to parametrized\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/6387d0a60d80cb96231ad32fe81be47cddfe1c78\"\u003e\u003ccode\u003e6387d0a\u003c/code\u003e\u003c/a\u003e test: let (most) tests run with no network\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1d31e33cfe0ccef7d87c1f0c6219f55a3d9b5eee\"\u003e\u003ccode\u003e1d31e33\u003c/code\u003e\u003c/a\u003e build: workflows sometimes need more than 10 min\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/62949782b7810d8ffc228ba0e00f81c2ab81cda7\"\u003e\u003ccode\u003e6294978\u003c/code\u003e\u003c/a\u003e refactor: an error message is now uniform across versions\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.10.7...7.13.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `furo` from 2025.9.25 to 2025.12.19\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/releases\"\u003efuro's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the supported Sphinx version range\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\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/pradyunsg/furo/blob/main/docs/changelog.md\"\u003efuro's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19 -- Harmonious Honeydew\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 9.\u003c/li\u003e\n\u003cli\u003eDrop support for Sphinx 6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.09.25 -- Gleaming Green\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChange the dark mode code back to \u003ccode\u003enative\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.07.19 -- Frozen Flame\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Switch to accessible-pygments themes\u003c/li\u003e\n\u003cli\u003e✨ Prefetch the sidebar logos\u003c/li\u003e\n\u003cli\u003e✨ Fix flickering header drop shadow on Safari\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erel=edit\u003c/code\u003e attribute to \u0026quot;Edit this page\u0026quot; link/icon\u003c/li\u003e\n\u003cli\u003eBump NodeJS and npm dependency versions\u003c/li\u003e\n\u003cli\u003eBump Saas \u0026amp; Webpack major versions\u003c/li\u003e\n\u003cli\u003eImprove current page detection to be resilient to sticky elements above header\u003c/li\u003e\n\u003cli\u003eModernise Sass and use \u003ccode\u003e@use\u003c/code\u003e + \u003ccode\u003e@forward\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove top of code \u003ccode\u003eborder-radius\u003c/code\u003e with captions\u003c/li\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value\u003c/li\u003e\n\u003cli\u003eUse distinct images for light and dark mode in the documentation\u003c/li\u003e\n\u003cli\u003eUse the modern Saas Modules\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.08.06 -- Energetic Eminence\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 8\u003c/li\u003e\n\u003cli\u003e✨ Add smoother transitions between breakpoints\u003c/li\u003e\n\u003cli\u003eIncrease specificity of table-wrapper selector\u003c/li\u003e\n\u003cli\u003eAvoid page breaks inside paragraphs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.07.18 -- Dull Denim\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImprove how icons are handled and aligned.\u003c/li\u003e\n\u003cli\u003eImprove scroll event handler.\u003c/li\u003e\n\u003cli\u003eHide the copybutton by default.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003esource_view_link\u003c/code\u003e configuration handling.\u003c/li\u003e\n\u003cli\u003eFix close tag on pencil icon.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.05.06 -- Cheerful Cerulean\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add new custom icons for auto mode, reflecting the currently active theme.\u003c/li\u003e\n\u003cli\u003e✨ Add a view this page button.\u003c/li\u003e\n\u003cli\u003e✨ Add colours and highlighting to \u0026quot;version modified\u0026quot; API helpers.\u003c/li\u003e\n\u003cli\u003e✨ Add release information to various customisation knobs.\u003c/li\u003e\n\u003cli\u003eMake all icons bigger and use a thinner stroke with them.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.04.27 -- Bold Burgundy\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a skip to content link.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/dd9e9f920494f24b9b8dd954ec9d07e0b9d12817\"\u003e\u003ccode\u003edd9e9f9\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.12.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d43f7e98577aa2db8580a83a4d4c3dcf54617de9\"\u003e\u003ccode\u003ed43f7e9\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d27cab5e448c44e366577a80bf99beee6fa941a5\"\u003e\u003ccode\u003ed27cab5\u003c/code\u003e\u003c/a\u003e Bump the supported Sphinx version range\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/12f288eb8c8c57dc751e208545b07f1584bb29a7\"\u003e\u003ccode\u003e12f288e\u003c/code\u003e\u003c/a\u003e Back to development\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\"\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.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.18.2...v1.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 4.3.0 to 4.5.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.5.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: python\u003c/code\u003e with \u003ccode\u003erepo: local\u003c/code\u003e without \u003ccode\u003eadditional_dependencies\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3597\"\u003e#3597\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.5.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epre-commit hazmat\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3585\"\u003e#3585\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.4.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--fail-fast\u003c/code\u003e option to \u003ccode\u003epre-commit run\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3528\"\u003e#3528\u003c/a\u003e PR by \u003ca href=\"https://github.com/JulianMaurin\"\u003e\u003ccode\u003e@​JulianMaurin\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003eruby-build\u003c/code\u003e / \u003ccode\u003erbenv\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3566\"\u003e#3566\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3565\"\u003e#3565\u003c/a\u003e issue by \u003ca href=\"https://github.com/MRigal\"\u003e\u003ccode\u003e@​MRigal\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: unsupported\u003c/code\u003e / \u003ccode\u003elanguage: unsupported_script\u003c/code\u003e as aliases for \u003ccode\u003elanguage: system\u003c/code\u003e / \u003ccode\u003elanguage: script\u003c/code\u003e (which will eventually be deprecated).\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3577\"\u003e#3577\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd support docker-in-docker detection for cgroups v2.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3535\"\u003e#3535\u003c/a\u003e PR by \u003ca href=\"https://github.com/br-rhrbacek\"\u003e\u003ccode\u003e@​br-rhrbacek\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3360\"\u003e#3360\u003c/a\u003e issue by \u003ca href=\"https://github.com/JasonAlt\"\u003e\u003ccode\u003e@​JasonAlt\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle when docker gives \u003ccode\u003eSecurityOptions: null\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3537\"\u003e#3537\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3514\"\u003e#3514\u003c/a\u003e issue by \u003ca href=\"https://github.com/jenstroeger\"\u003e\u003ccode\u003e@​jenstroeger\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix error context for invalid \u003ccode\u003estages\u003c/code\u003e in \u003ccode\u003e.pre-commit-config.yaml\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3576\"\u003e#3576\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.5.1 - 2025-12-16\u003c/h1\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: python\u003c/code\u003e with \u003ccode\u003erepo: local\u003c/code\u003e without \u003ccode\u003eadditional_dependencies\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3597\"\u003e#3597\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.5.0 - 2025-11-22\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epre-commit hazmat\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3585\"\u003e#3585\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.4.0 - 2025-11-08\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--fail-fast\u003c/code\u003e option to \u003ccode\u003epre-commit run\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3528\"\u003e#3528\u003c/a\u003e PR by \u003ca href=\"https://github.com/JulianMaurin\"\u003e\u003ccode\u003e@​JulianMaurin\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003eruby-build\u003c/code\u003e / \u003ccode\u003erbenv\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3566\"\u003e#3566\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3565\"\u003e#3565\u003c/a\u003e issue by \u003ca href=\"https://github.com/MRigal\"\u003e\u003ccode\u003e@​MRigal\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: unsupported\u003c/code\u003e / \u003ccode\u003elanguage: unsupported_script\u003c/code\u003e as aliases\nfor \u003ccode\u003elanguage: system\u003c/code\u003e / \u003ccode\u003elanguage: script\u003c/code\u003e (which will eventually be\ndeprecated).\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3577\"\u003e#3577\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd support docker-in-docker detection for cgroups v2.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3535\"\u003e#3535\u003c/a\u003e PR by \u003ca href=\"https://github.com/br-rhrbacek\"\u003e\u003ccode\u003e@​br-rhrbacek\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3360\"\u003e#3360\u003c/a\u003e issue by \u003ca href=\"https://github.com/JasonAlt\"\u003e\u003ccode\u003e@​JasonAlt\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle when docker gives \u003ccode\u003eSecurityOptions: null\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3537\"\u003e#3537\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3514\"\u003e#3514\u003c/a\u003e issue by \u003ca href=\"https://github.com/jenstroeger\"\u003e\u003ccode\u003e@​jenstroeger\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix error context for invalid \u003ccode\u003estages\u003c/code\u003e in \u003ccode\u003e.pre-commit-config.yaml\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3576\"\u003e#3576\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/8a0630ca1aa7f6d5665effe674ebe2022af17919\"\u003e\u003ccode\u003e8a0630c\u003c/code\u003e\u003c/a\u003e v4.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/fcbc745744377ef2c9fe6a7e1a21c67d797933dc\"\u003e\u003ccode\u003efcbc745\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3597\"\u003e#3597\u003c/a\u003e from pre-commit/empty-setup-py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/51592eececd13b99c40ec477ad8f810799147227\"\u003e\u003ccode\u003e51592ee\u003c/code\u003e\u003c/a\u003e fix python local template when artifact dirs are present\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/67e8faf80baffcb4b79c31b89ca9a413a1cd6776\"\u003e\u003ccode\u003e67e8faf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3596\"\u003e#3596\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/c251e6b6d011b3b262339dc8e109de29b0ff8db1\"\u003e\u003ccode\u003ec251e6b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/98ccafa3ce42b846b9a9be9ed73fbbec7415496d\"\u003e\u003ccode\u003e98ccafa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3593\"\u003e#3593\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/48953556d06f8cdb4248002c1a0044e69e0916b3\"\u003e\u003ccode\u003e4895355\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2cedd58e691f4d3bc6ab266c7d7c28464c3502be\"\u003e\u003ccode\u003e2cedd58\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3588\"\u003e#3588\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/465192d7de58d569776eaaa818c94cb2b962d436\"\u003e\u003ccode\u003e465192d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/fd42f96874279c4f65363bfea5238714419e54d7\"\u003e\u003ccode\u003efd42f96\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3586\"\u003e#3586\u003c/a\u003e from pre-commit/zipapp-sha256-file-not-needed\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.3.0...v4.5.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.13.3 to 0.14.14\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.14.14\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-01-22.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve required parentheses in lambda bodies (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22747\"\u003e#22747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCombine range suppression code diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22613\"\u003e#22613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Second positional argument to \u003ccode\u003eAsset\u003c/code\u003e/\u003ccode\u003eDataset\u003c/code\u003e should not be a dictionary (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22453\"\u003e#22453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect duplicate entries in \u003ccode\u003e__all__\u003c/code\u003e (\u003ccode\u003eRUF068\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22114\"\u003e#22114\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Allow shadowing non-builtin bindings (\u003ccode\u003eUP029\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22749\"\u003e#22749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Apply \u003ccode\u003eUP045\u003c/code\u003e to string arguments of \u003ccode\u003etyping.cast\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22320\"\u003e#22320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pie\u003c/code\u003e] Detect duplicated declared class fields in \u003ccode\u003ePIE794\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22717\"\u003e#22717\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix inconsistent handling of forward references for \u003ccode\u003e__new__\u003c/code\u003e, \u003ccode\u003e__enter__\u003c/code\u003e, \u003ccode\u003e__aenter__\u003c/code\u003e in \u003ccode\u003ePYI034\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22798\"\u003e#22798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Support \u003ccode\u003echeck\u003c/code\u003e parameter in \u003ccode\u003ePT011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22725\"\u003e#22725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add exception for \u003ccode\u003ectypes.Structure._fields_\u003c/code\u003e (\u003ccode\u003eRUF012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22559\"\u003e#22559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMany fixes are now marked unsafe if they would remove comments:\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22656\"\u003e\u003ccode\u003eB009\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22657\"\u003e\u003ccode\u003eB010\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22658\"\u003e\u003ccode\u003eB013\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22659\"\u003e\u003ccode\u003eB014\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22632\"\u003e\u003ccode\u003eB033\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22662\"\u003e\u003ccode\u003eSIM910\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22661\"\u003e\u003ccode\u003eSIM911\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP007\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22774\"\u003e\u003ccode\u003eUP039\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22773\"\u003e\u003ccode\u003eUP041\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP045\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22767\"\u003e\u003ccode\u003eFURB105\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22681\"\u003e\u003ccode\u003eFURB116\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22680\"\u003e\u003ccode\u003eFURB136\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22679\"\u003e\u003ccode\u003eFURB140\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22670\"\u003e\u003ccode\u003eFURB145\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22669\"\u003e\u003ccode\u003eFURB154\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22668\"\u003e\u003ccode\u003eFURB157\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22667\"\u003e\u003ccode\u003eFURB164\u003c/code\u003e\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22666\"\u003e\u003ccode\u003eFURB181\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22665\"\u003e\u003ccode\u003eFURB188\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22663\"\u003e\u003ccode\u003eRUF019\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22664\"\u003e\u003ccode\u003eRUF020\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--exit-non-zero-on-format\u003c/code\u003e to formatter exit codes section (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22761\"\u003e#22761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate contributing guide for adding a new rule (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22779\"\u003e#22779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eFastAPI\u003c/code\u003e] Document fix safety for \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22655\"\u003e#22655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Tweak explanation to focus on latency/efficiency tradeoff (\u003ccode\u003eASYNC110\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22715\"\u003e#22715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Make example error out-of-the-box (\u003ccode\u003ePD002\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22561\"\u003e#22561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB101\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22770\"\u003e#22770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB103\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22769\"\u003e#22769\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/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\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/caiquejjx\"\u003e\u003ccode\u003e@​caiquejjx\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sjyangkevin\"\u003e\u003ccode\u003e@​sjyangkevin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MeGaGiGaGon\"\u003e\u003ccode\u003e@​MeGaGiGaGon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leandrobbraga\"\u003e\u003ccode\u003e@​leandrobbraga\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/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.14.14\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-01-22.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve required parentheses in lambda bodies (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22747\"\u003e#22747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCombine range suppression code diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22613\"\u003e#22613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Second positional argument to \u003ccode\u003eAsset\u003c/code\u003e/\u003ccode\u003eDataset\u003c/code\u003e should not be a dictionary (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22453\"\u003e#22453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect duplicate entries in \u003ccode\u003e__all__\u003c/code\u003e (\u003ccode\u003eRUF068\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22114\"\u003e#22114\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Allow shadowing non-builtin bindings (\u003ccode\u003eUP029\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22749\"\u003e#22749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Apply \u003ccode\u003eUP045\u003c/code\u003e to string arguments of \u003ccode\u003etyping.cast\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22320\"\u003e#22320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pie\u003c/code\u003e] Detect duplicated declared class fields in \u003ccode\u003ePIE794\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22717\"\u003e#22717\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix inconsistent handling of forward references for \u003ccode\u003e__new__\u003c/code\u003e, \u003ccode\u003e__enter__\u003c/code\u003e, \u003ccode\u003e__aenter__\u003c/code\u003e in \u003ccode\u003ePYI034\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22798\"\u003e#22798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Support \u003ccode\u003echeck\u003c/code\u003e parameter in \u003ccode\u003ePT011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22725\"\u003e#22725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add exception for \u003ccode\u003ectypes.Structure._fields_\u003c/code\u003e (\u003ccode\u003eRUF012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22559\"\u003e#22559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMany fixes are now marked unsafe if they would remove comments:\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22656\"\u003e\u003ccode\u003eB009\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22657\"\u003e\u003ccode\u003eB010\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22658\"\u003e\u003ccode\u003eB013\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22659\"\u003e\u003ccode\u003eB014\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22632\"\u003e\u003ccode\u003eB033\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22662\"\u003e\u003ccode\u003eSIM910\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22661\"\u003e\u003ccode\u003eSIM911\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP007\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22774\"\u003e\u003ccode\u003eUP039\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22773\"\u003e\u003ccode\u003eUP041\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP045\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22767\"\u003e\u003ccode\u003eFURB105\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22681\"\u003e\u003ccode\u003eFURB116\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22680\"\u003e\u003ccode\u003eFURB136\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22679\"\u003e\u003ccode\u003eFURB140\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22670\"\u003e\u003ccode\u003eFURB145\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22669\"\u003e\u003ccode\u003eFURB154\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22668\"\u003e\u003ccode\u003eFURB157\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22667\"\u003e\u003ccode\u003eFURB164\u003c/code\u003e\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22666\"\u003e\u003ccode\u003eFURB181\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22665\"\u003e\u003ccode\u003eFURB188\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22663\"\u003e\u003ccode\u003eRUF019\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22664\"\u003e\u003ccode\u003eRUF020\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--exit-non-zero-on-format\u003c/code\u003e to formatter exit codes section (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22761\"\u003e#22761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate contributing guide for adding a new rule (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22779\"\u003e#22779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eFastAPI\u003c/code\u003e] Document fix safety for \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22655\"\u003e#22655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Tweak explanation to focus on latency/efficiency tradeoff (\u003ccode\u003eASYNC110\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22715\"\u003e#22715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Make example error out-of-the-box (\u003ccode\u003ePD002\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22561\"\u003e#22561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB101\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22770\"\u003e#22770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB103\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22769\"\u003e#22769\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/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\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/caiquejjx\"\u003e\u003ccode\u003e@​caiquejjx\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sjyangkevin\"\u003e\u003ccode\u003e@​sjyangkevin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MeGaGiGaGon\"\u003e\u003ccode\u003e@​MeGaGiGaGon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leandrobbraga\"\u003e\u003ccode\u003e@​leandrobbraga\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\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/8b2e7b36f246b990fe473a84eef25ff429e59ecf\"\u003e\u003ccode\u003e8b2e7b3\u003c/code\u003e\u003c/a\u003e Prepare release v0.14.14 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22813\"\u003e#22813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4c7d1f50fd8d1baf06a3c8885ecd0ded0113d383\"\u003e\u003ccode\u003e4c7d1f5\u003c/code\u003e\u003c/a\u003e [ty] Infer \u003ccode\u003eTypedDict\u003c/code\u003e types with \u0026gt;=1 required key as being always truthy (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b7de4341535ff2b299695335e0a7b9ebaf297348\"\u003e\u003ccode\u003eb7de434\u003c/code\u003e\u003c/a\u003e add CCfW hooks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22803\"\u003e#22803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b912dfc8788f8f8c351767899df6b72ce3366352\"\u003e\u003ccode\u003eb912dfc\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epyupgrade\u003c/code\u003e] Apply \u003ccode\u003eUP045\u003c/code\u003e to string arguments of \u003ccode\u003etyping.cast\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22320\"\u003e#22320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1ff062d1cccb8025de184a55c6dfe469a4293249\"\u003e\u003ccode\u003e1ff062d\u003c/code\u003e\u003c/a\u003e [ty] Improve completion rankings for raise-from/except contexts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22775\"\u003e#22775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7e408a51d24db2bca248bb90f2f7938f83efd22b\"\u003e\u003ccode\u003e7e408a5\u003c/code\u003e\u003c/a\u003e Update dependency wrangler to v4.59.1 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22793\"\u003e#22793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ceb876b82300bd237d11e3eb77c46fcf3d3afe85\"\u003e\u003ccode\u003eceb876b\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix inconsistent handling of forward references for \u003ccode\u003e__new__\u003c/code\u003e,...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c5b4ee68c90faf0e609fa6553a171a7ba60ebdcb\"\u003e\u003ccode\u003ec5b4ee6\u003c/code\u003e\u003c/a\u003e [ty] Support solving generics involving PEP 695 type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22678\"\u003e#22678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b9a61293153f43df9963c727539309b76ac4756d\"\u003e\u003ccode\u003eb9a6129\u003c/code\u003e\u003c/a\u003e [ty] Improve support for kwarg splats in dictionary literals (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22781\"\u003e#22781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f516d47ceb7f6a0c3a95eaaa2c7451a32b5d7120\"\u003e\u003ccode\u003ef516d47\u003c/code\u003e\u003c/a\u003e Update contributing guide for adding a new rule (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22779\"\u003e#22779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.13.3...0.14.14\"\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.2 to 9.0.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\u003e9.0.2\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.2 (2025-12-06)\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/13896\"\u003e#13896\u003c/a\u003e: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.\u003c/p\u003e\n\u003cp\u003eYou may enable it again by passing \u003ccode\u003e-p terminalprogress\u003c/code\u003e. We may enable it by default again once compatibility improves in the future.\u003c/p\u003e\n\u003cp\u003eAdditionally, when the environment variable \u003ccode\u003eTERM\u003c/code\u003e is \u003ccode\u003edumb\u003c/code\u003e, the escape codes are no longer emitted, even if the plugin is enabled.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the \u003ccode\u003etmp_path_retention_count\u003c/code\u003e settings in the API reference from number to string.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute was changed in a breaking manner in pytest 9.0.0.\nDue to its usage in the ecosystem, it is now restored to working order using a compatibility shim.\nIt will be deprecated in pytest 9.1 and removed in pytest 10.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13965\"\u003e#13965\u003c/a\u003e: Fixed quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10.\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/4492\"\u003e#4492\u003c/a\u003e: The API Reference now contains cross-reference-able documentation of \u003ccode\u003epytest's command-line flags \u0026lt;command-line-flags\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.0.1\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.1 (2025-11-12)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13895\"\u003e#13895\u003c/a\u003e: Restore support for skipping tests via \u003ccode\u003eraise unittest.SkipTest\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress plugin added in pytest 9.0 is now automatically disabled when iTerm2 is detected, it generated desktop notifications instead of the desired functionality.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the verbosity settings in the API reference from number to string.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13910\"\u003e#13910\u003c/a\u003e: Fixed \u003c!-- raw HTML omitted --\u003eUserWarning: Do not expect file_or_dir\u003c!-- raw HTML omitted --\u003e on some earlier Python 3.12 and 3.13 point versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePackaging updates and notes for downstreams\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\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/13891\"\u003e#13891\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13942\"\u003e#13942\u003c/a\u003e: The CI/CD part of the release automation is now capable of\ncreating GitHub Releases without having a Git checkout on\ndisk -- by \u003ccode\u003ebluetech\u003c/code\u003e and \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/3d10b5148e03eb82b3ee29181dbdc73cf82699e2\"\u003e\u003ccode\u003e3d10b51\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/188750b725add8c3400eee6fbb6b80559c296d69\"\u003e\u003ccode\u003e188750b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14030\"\u003e#14030\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/1e4b01d1f...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b7d7bef90cb9a6db8ac1d3dd5b9ae0eb9abd6c58\"\u003e\u003ccode\u003eb7d7bef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14014\"\u003e#14014\u003c/a\u003e from bluetech/compat-note\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bd08e85ac76614ff5ca9ae338aee8d8b06c8fae0\"\u003e\u003ccode\u003ebd08e85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14013\"\u003e#14013\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/922b60377...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bc783862991241c442c9f9c068e51737ec15ea10\"\u003e\u003ccode\u003ebc78386\u003c/code\u003e\u003c/a\u003e Add CLI options reference documentation (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13930\"\u003e#13930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/5a4e398ce89bc23d2cf3fd98c042fdffb6fa8afa\"\u003e\u003ccode\u003e5a4e398\u003c/code\u003e\u003c/a\u003e Fix docs typo (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14005\"\u003e#14005\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14008\"\u003e#14008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/d7ae6df394398168bf9d926f803c26849c8f07ee\"\u003e\u003ccode\u003ed7ae6df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14006\"\u003e#14006\u003c/a\u003e from pytest-dev/maintenance/update-plugin-list-tmpl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/556f6a22e12d13d1ffeceaf64424eb95d5e0fb87\"\u003e\u003ccode\u003e556f6a2\u003c/code\u003e\u003c/a\u003e pre-commit: fix rst-lint after new release (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13999\"\u003e#13999\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14001\"\u003e#14001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c60fbe63a26f64a42738e3f3527a8f79024fdf50\"\u003e\u003ccode\u003ec60fbe6\u003c/code\u003e\u003c/a\u003e Fix quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/73d9b011183d9a1c4a7007c1119d97a6e627788e\"\u003e\u003ccode\u003e73d9b01\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13995\"\u003e#13995\u003c/a\u003e from nicoddemus/patchback/backports/9.0.x/1b5200c0f...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.4.2...9.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-click` from 6.1.0 to 6.2.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/click-contrib/sphinx-click/commit/e8eb75e292ff6df69230420d992a34e68a7385d0\"\u003e\u003ccode\u003ee8eb75e\u003c/code\u003e\u003c/a\u003e add release notes with reno\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/click-contrib/sphinx-click/commit/46f6445bb67c76f2a4b638f4003862ee85dafba1\"\u003e\u003ccode\u003e46f6445\u003c/code\u003e\u003c/a\u003e fix tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/click-contrib/sphinx-click/commit/722f4217c1bf6dfd68f9e2c26aa52d590973b11e\"\u003e\u003ccode\u003e722f421\u003c/code\u003e\u003c/a\u003e print \u0026quot;Usage\u0026quot; before printing the command usage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/click-contrib/sphinx-click/commit/ebc38179a0229435becdd64026fa88be7ab2d60c\"\u003e\u003ccode\u003eebc3817\u003c/code\u003e\u003c/a\u003e Fix readthedocs build (redux)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/click-contrib/sphinx-click/commit/9ee09f9d3252fd6e8bce9578eca82411e89c76e5\"\u003e\u003ccode\u003e9ee09f9\u003c/code\u003e\u003c/a\u003e Fix readthedocs build\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/click-contrib/sphinx-click/compare/6.1.0...6.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.10.6 to 3.10.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: v3.10.8\u003c/h2\u003e\n\u003cp\u003eThis is a bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eThe primary highlights of this release are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eProperly allow freethreaded mode in the MacOS backend\u003c/li\u003e\n\u003cli\u003eBetter error handling for MacOS backend\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eREL: v3.10.7\u003c/h2\u003e\n\u003cp\u003eThis is the latest bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eThe most important update in this release is that the minimum version\nof \u003ccode\u003epyparsing\u003c/code\u003e has been updated to version 3.0.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/1392cbe3c79cdb93f9282747841d648770f60249\"\u003e\u003ccode\u003e1392cbe\u003c/code\u003e\u003c/a\u003e REL: v3.10.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/0b9ebb35f8310f22eb7f932b2ae14befb1f40b6f\"\u003e\u003ccode\u003e0b9ebb3\u003c/code\u003e\u003c/a\u003e Doc release prep v3.10.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/bc7b5c4377ce2544e8936255c51c1ff7cd0c5a85\"\u003e\u003ccode\u003ebc7b5c4\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.10.7-doc' into v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/86b38d3f29aa2af2ddcbd1895433117caa0fba47\"\u003e\u003ccode\u003e86b38d3\u003c/code\u003e\u003c/a\u003e Github stats v3.10.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/9512188e42f9d221f83869113c44f99fe1832a0f\"\u003e\u003ccode\u003e9512188\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30717\"\u003e#30717\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-30714-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/d300769285e2c920804134e40ec83837eabe16d8\"\u003e\u003ccode\u003ed300769\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30714\"\u003e#30714\u003c/a\u003e: FIX: Gracefully handle numpy arrays as input to check_in_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/799bc9561daea5b5578f888817cb45c9321a0463\"\u003e\u003ccode\u003e799bc95\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30711\"\u003e#30711\u003c/a\u003e from ngoldbaum/v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/134000ba19a4354da2ad1084627039e05c936754\"\u003e\u003ccode\u003e134000b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30697\"\u003e#30697\u003c/a\u003e from ngoldbaum/fix-plotting-on-worker-threads\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/5b8e219d70f1daa443330eb6a5a6211506b37362\"\u003e\u003ccode\u003e5b8e219\u003c/code\u003e\u003c/a\u003e TST: Run macosx backends in a subprocess\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/878e71a95006d3aec9505f3bd836968951fdd163\"\u003e\u003ccode\u003e878e71a\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/29810\"\u003e#29810\u003c/a\u003e: Declare free-threaded support in MacOS backend extension ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.10.6...v3.10.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `deptry` from 0.23.1 to 0.24.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fpgmaas/deptry/releases\"\u003edeptry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.24.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003ch4\u003ePython 3.9 support dropped\u003c/h4\u003e\n\u003cp\u003eSupport for Python 3.9 has been dropped, as it has reached its end of life.\u003c/p\u003e\n\u003ch4\u003ePyPy 3.10 support dropped, 3.11 added\u003c/h4\u003e\n\u003cp\u003eSupport for PyPy 3.10 has been dropped, since it is unsupported. We now only test against PyPy 3.11, and only publish wheels for this version.\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd GitHub Actions annotations reporter (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1059\"\u003e#1059\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support...\n\n_Description has been truncated_","html_url":"https://github.com/statisticsnorway/ssb-pre-system/pull/122","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/statisticsnorway%2Fssb-pre-system/issues/122","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/122/packages"},{"uuid":"3853934615","node_id":"PR_kwDOHIBnos6_Q6dp","number":469,"state":"open","title":"build(deps): bump the simple group across 1 directory with 39 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-25T22:11:22.000Z","updated_at":"2026-02-02T00:00:47.721Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"simple","update_count":39,"packages":[{"name":"boto3-stubs","old_version":"1.38.3","new_version":"1.42.34"},{"name":"boto3","old_version":"1.38.3","new_version":"1.42.34","repository_url":"https://github.com/boto/boto3"},{"name":"click","old_version":"8.1.3","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"colored","old_version":"2.3.0","new_version":"2.3.1"},{"name":"humanize","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python-humanize/humanize"},{"name":"ipympl","old_version":"0.9.7","new_version":"0.10.0","repository_url":"https://github.com/matplotlib/ipympl"},{"name":"ipywidgets","old_version":"8.1.6","new_version":"8.1.8","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"jupyterlab","old_version":"4.4.1","new_version":"4.5.3","repository_url":"https://github.com/jupyterlab/jupyterlab"},{"name":"matplotlib","old_version":"3.10.1","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"matplotlib-stubs","old_version":"0.2.0","new_version":"0.3.11","repository_url":"https://github.com/hoel-bagard/matplotlib-stubs"},{"name":"networkx","old_version":"3.4.2","new_version":"3.6.1","repository_url":"https://github.com/networkx/networkx"},{"name":"pandas-stubs","old_version":"2.2.3.250308","new_version":"2.3.3.260113","repository_url":"https://github.com/pandas-dev/pandas-stubs"},{"name":"prettytable","old_version":"3.16.0","new_version":"3.17.0","repository_url":"https://github.com/prettytable/prettytable"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.1","repository_url":"https://github.com/giampaolo/psutil"},{"name":"psycopg","old_version":"3.2.6","new_version":"3.3.2","repository_url":"https://github.com/psycopg/psycopg"},{"name":"psycopg-binary","old_version":"3.2.6","new_version":"3.3.2","repository_url":"https://github.com/psycopg/psycopg"},{"name":"pydantic","old_version":"2.8.2","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pymysql","old_version":"1.1.1","new_version":"1.1.2","repository_url":"https://github.com/PyMySQL/PyMySQL"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.19.1"},{"name":"ruff","old_version":"0.0.292","new_version":"0.14.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"scipy","old_version":"1.15.2","new_version":"1.17.0","repository_url":"https://github.com/scipy/scipy"},{"name":"shtab","old_version":"1.7.2","new_version":"1.8.0","repository_url":"https://github.com/iterative/shtab"},{"name":"sqlparse","old_version":"0.5.3","new_version":"0.5.5","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"twine","old_version":"6.1.0","new_version":"6.2.0","repository_url":"https://github.com/pypa/twine"},{"name":"types-markdown","old_version":"3.8.0.20250415","new_version":"3.10.0.20251106","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-psutil","old_version":"7.0.0.20250401","new_version":"7.2.1.20260116","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-requests","old_version":"2.32.0.20250328","new_version":"2.32.4.20260107","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"xxhash","old_version":"3.5.0","new_version":"3.6.0","repository_url":"https://github.com/ifduyue/python-xxhash"},{"name":"yamllint","old_version":"1.37.0","new_version":"1.38.0","repository_url":"https://github.com/adrienverge/yamllint"},{"name":"confluent-kafka","old_version":"2.6.1","new_version":"2.13.0","repository_url":"https://github.com/confluentinc/confluent-kafka-python"},{"name":"fastavro","old_version":"1.10.0","new_version":"1.12.1","repository_url":"https://github.com/fastavro/fastavro"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"minio","old_version":"7.2.15","new_version":"7.2.20","repository_url":"https://github.com/minio/minio-py"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"pip","old_version":"25.1","new_version":"25.3","repository_url":"https://github.com/pypa/pip"},{"name":"setuptools","old_version":"80.0.0","new_version":"80.10.1","repository_url":"https://github.com/pypa/setuptools"}],"path":null,"ecosystem":"pip"},"body":"Bumps the simple group with 39 updates in the /ci/builder directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [boto3-stubs[ec2,iam,kinesis,s3,sqs,ssm,sts]](https://github.com/youtype/mypy_boto3_builder) | `1.38.3` | `1.42.34` |\n| [boto3](https://github.com/boto/boto3) | `1.38.3` | `1.42.34` |\n| [click](https://github.com/pallets/click) | `8.1.3` | `8.3.1` |\n| [colored](https://gitlab.com/dslackw/colored) | `2.3.0` | `2.3.1` |\n| [humanize](https://github.com/python-humanize/humanize) | `4.12.2` | `4.15.0` |\n| [ipympl](https://github.com/matplotlib/ipympl) | `0.9.7` | `0.10.0` |\n| [ipywidgets](https://github.com/jupyter-widgets/ipywidgets) | `8.1.6` | `8.1.8` |\n| [jupyterlab](https://github.com/jupyterlab/jupyterlab) | `4.4.1` | `4.5.3` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.1` | `3.10.8` |\n| [matplotlib-stubs](https://github.com/hoel-bagard/matplotlib-stubs) | `0.2.0` | `0.3.11` |\n| [networkx](https://github.com/networkx/networkx) | `3.4.2` | `3.6.1` |\n| [pandas-stubs](https://github.com/pandas-dev/pandas-stubs) | `2.2.3.250308` | `2.3.3.260113` |\n| [prettytable](https://github.com/prettytable/prettytable) | `3.16.0` | `3.17.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.1` |\n| [psycopg](https://github.com/psycopg/psycopg) | `3.2.6` | `3.3.2` |\n| [psycopg-binary](https://github.com/psycopg/psycopg) | `3.2.6` | `3.3.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.8.2` | `2.12.5` |\n| [pymysql](https://github.com/PyMySQL/PyMySQL) | `1.1.1` | `1.1.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| ruamel-yaml | `0.18.10` | `0.19.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.0.292` | `0.14.14` |\n| [scipy](https://github.com/scipy/scipy) | `1.15.2` | `1.17.0` |\n| [shtab](https://github.com/iterative/shtab) | `1.7.2` | `1.8.0` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.3` | `0.5.5` |\n| [twine](https://github.com/pypa/twine) | `6.1.0` | `6.2.0` |\n| [types-markdown](https://github.com/typeshed-internal/stub_uploader) | `3.8.0.20250415` | `3.10.0.20251106` |\n| [types-psutil](https://github.com/typeshed-internal/stub_uploader) | `7.0.0.20250401` | `7.2.1.20260116` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250328` | `2.32.4.20260107` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [xxhash](https://github.com/ifduyue/python-xxhash) | `3.5.0` | `3.6.0` |\n| [yamllint](https://github.com/adrienverge/yamllint) | `1.37.0` | `1.38.0` |\n| [confluent-kafka](https://github.com/confluentinc/confluent-kafka-python) | `2.6.1` | `2.13.0` |\n| [fastavro](https://github.com/fastavro/fastavro) | `1.10.0` | `1.12.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [minio](https://github.com/minio/minio-py) | `7.2.15` | `7.2.20` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [pip](https://github.com/pypa/pip) | `25.1` | `25.3` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.0.0` | `80.10.1` |\n\n\nUpdates `boto3-stubs[ec2,iam,kinesis,s3,sqs,ssm,sts]` from 1.38.3 to 1.42.34\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\"\u003eboto3-stubs[ec2,iam,kinesis,s3,sqs,ssm,sts]'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 `boto3` from 1.38.3 to 1.42.34\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/9a285e6beab78c1f4c97047674ec09ac5451c4d1\"\u003e\u003ccode\u003e9a285e6\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.34'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/29574158e22c3b2d6ca044eef1dc054d28d73485\"\u003e\u003ccode\u003e2957415\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.34\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/8e1fd2e6e5c1fd6236cacf2dc9064d55d8baf07b\"\u003e\u003ccode\u003e8e1fd2e\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/9cadce52dae6e58e450a9ac0745a721dda8a4044\"\u003e\u003ccode\u003e9cadce5\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/ee24f15c3013be4f4c6e76bfbc948b910e6f8f35\"\u003e\u003ccode\u003eee24f15\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b0f2cf318d9bef8eaf3f11cd81b22ce67810ea82\"\u003e\u003ccode\u003eb0f2cf3\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.33\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/6e690ed2966406d4b53532a44e70c93370368ae6\"\u003e\u003ccode\u003e6e690ed\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b84ec5ebd8880b77e998bfdd28984f214c3f1fa3\"\u003e\u003ccode\u003eb84ec5e\u003c/code\u003e\u003c/a\u003e Add BOTOCORE_TCP_KEEPALIVE environment variable documentation (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4705\"\u003e#4705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/36cebd34052db2fc7449b85ac04f903fb40f8b2f\"\u003e\u003ccode\u003e36cebd3\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d4d10440677e98c5c15fb6c84cc605bd7401fd74\"\u003e\u003ccode\u003ed4d1044\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.38.3...1.42.34\"\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.3 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\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\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/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\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 \u003ccode\u003eCliRunner\u003c/code\u003e. :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.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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.1.3...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `colored` from 2.3.0 to 2.3.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://gitlab.com/dslackw/colored/blob/master/CHANGES.md\"\u003ecolored's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[2.3.1] - 2025-07-28\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor: Optimized Windows Terminal Mode initialization: Moved \u003ccode\u003eColored.enable_windows_terminal_mode()\u003c/code\u003e call from \u003ccode\u003eColored.__init__\u003c/code\u003e to module-level execution. This ensures the Windows virtual terminal processing is enabled only once when the \u003ccode\u003ecolored\u003c/code\u003e module is imported, instead of on every \u003ccode\u003eColored\u003c/code\u003e object instantiation. This change improves performance by avoiding redundant API calls and checks.\u003c/li\u003e\n\u003cli\u003eRefactor: Reduce \u003ccode\u003eColored\u003c/code\u003e instance attributes: Removed redundant instance attributes (\u003ccode\u003e_ESC\u003c/code\u003e, \u003ccode\u003e_END\u003c/code\u003e, \u003ccode\u003e_STYLES\u003c/code\u003e, etc.) from the \u003ccode\u003eColored\u003c/code\u003e class's \u003ccode\u003e__init__\u003c/code\u003e method. These constants are now accessed directly from the \u003ccode\u003eLibrary\u003c/code\u003e module, reducing memory footprint per instance and improving adherence to Pylint's \u003ccode\u003eR0902\u003c/code\u003e warning.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved static analysis warnings in \u003ccode\u003eenable_windows_terminal_mode()\u003c/code\u003e: Modified \u003ccode\u003eenable_windows_terminal_mode()\u003c/code\u003e to ensure consistent return statements and handle all possible execution paths explicitly. This addresses \u003ccode\u003emypy\u003c/code\u003e's \u0026quot;Missing return statement\u0026quot; error and \u003ccode\u003epylint\u003c/code\u003e's \u0026quot;inconsistent-return-statements\u0026quot; warning by making all return paths explicit and robustly handling potential \u003ccode\u003ectypes\u003c/code\u003e related exceptions. The return type hint was also updated to \u003ccode\u003eOptional[bool]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eResolved type hinting and tuple unpacking warnings in \u003ccode\u003eUtilities.is_percentage()\u003c/code\u003e: Modified the \u003ccode\u003eUtilities.is_percentage()\u003c/code\u003e method to explicitly return a fixed-length \u003ccode\u003etuple[int, int, int]\u003c/code\u003e. This addresses \u003ccode\u003emypy\u003c/code\u003e's \u0026quot;Incompatible return value type\u0026quot; error and \u003ccode\u003epylint\u003c/code\u003e's \u0026quot;unbalanced-tuple-unpacking\u0026quot; warning by ensuring consistent and statically verifiable return types.\u003c/li\u003e\n\u003cli\u003eRefined type validation and error handling in \u003ccode\u003eControls.nav()\u003c/code\u003e: Eliminated the redundant \u003ccode\u003e_is_str_object\u003c/code\u003e static method. Integrated string type validation directly into the \u003ccode\u003enav()\u003c/code\u003e method. Replaced \u003ccode\u003eAttributeError\u003c/code\u003e with \u003ccode\u003eTypeError\u003c/code\u003e for improved semantic clarity when handling invalid argument types.\u003c/li\u003e\n\u003cli\u003eEnsured \u003ccode\u003etest_hex_1.py\u003c/code\u003e correctly uses nearest ANSI codes for hex color representation, preventing \u003ccode\u003eInvalidHexColor\u003c/code\u003e exceptions during gradient and random color tests.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dslackw/colored/commit/9af8fd381f2b907f27005479fc17e2619de52904\"\u003e\u003ccode\u003e9af8fd3\u003c/code\u003e\u003c/a\u003e Updated for version 2.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dslackw/colored/commit/1a9fabd317896cc0b31479a922de35a2777e3113\"\u003e\u003ccode\u003e1a9fabd\u003c/code\u003e\u003c/a\u003e Updated for date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dslackw/colored/commit/6e26a657972662d2efd4d26ff3389fb59109827b\"\u003e\u003ccode\u003e6e26a65\u003c/code\u003e\u003c/a\u003e Updated for docstrings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dslackw/colored/commit/726c7e3a9fab59fec1da0d98cd236ab30bf5d335\"\u003e\u003ccode\u003e726c7e3\u003c/code\u003e\u003c/a\u003e Fix: InvalidHexColor for test_hex_1.py module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dslackw/colored/commit/ea826ab8814a0560a66412e9138449eb62a3add6\"\u003e\u003ccode\u003eea826ab\u003c/code\u003e\u003c/a\u003e Fixed type annotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dslackw/colored/commit/3ed4a56ce61d371153dcee140b57df3ba5d5d005\"\u003e\u003ccode\u003e3ed4a56\u003c/code\u003e\u003c/a\u003e Fixed type annotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dslackw/colored/commit/c44d80740872acc5e40132df6f958df09e4aa328\"\u003e\u003ccode\u003ec44d807\u003c/code\u003e\u003c/a\u003e Updated class docstring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dslackw/colored/commit/c7665e76dae836d65589ef977ec50f983af3d179\"\u003e\u003ccode\u003ec7665e7\u003c/code\u003e\u003c/a\u003e Refined type validation and error handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dslackw/colored/commit/1950dafdb25c78a20d8513076d41b3625429ca64\"\u003e\u003ccode\u003e1950daf\u003c/code\u003e\u003c/a\u003e Fixed for mypy no-untyped-def\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dslackw/colored/commit/9ad5943f409aa75b5b52ef9779b4f23f80de2ecd\"\u003e\u003ccode\u003e9ad5943\u003c/code\u003e\u003c/a\u003e Updated docstrings\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://gitlab.com/dslackw/colored/compare/2.3.0...2.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `humanize` 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-humanize/humanize/releases\"\u003ehumanize's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd locale support for decimal separator in \u003ccode\u003eintword\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/287\"\u003e#287\u003c/a\u003e) \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.15 (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/275\"\u003e#275\u003c/a\u003e) \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplace pre-commit with prek (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/276\"\u003e#276\u003c/a\u003e) \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003enaturaldelta\u003c/code\u003e: round the value to nearest unit that makes sense (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/272\"\u003e#272\u003c/a\u003e) \u003ca href=\"https://github.com/dangillet\"\u003e\u003ccode\u003e@​dangillet\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix plural form for \u003ccode\u003eintword\u003c/code\u003e and improve performance (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/273\"\u003e#273\u003c/a\u003e) \u003ca href=\"https://github.com/dangillet\"\u003e\u003ccode\u003e@​dangillet\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eException\u003c/code\u003e with more specific \u003ccode\u003eFileNotFoundError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/286\"\u003e#286\u003c/a\u003e) \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.0\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Uzbek language (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/264\"\u003e#264\u003c/a\u003e) \u003ca href=\"https://github.com/sSimuSs\"\u003e\u003ccode\u003e@​sSimuSs\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/268\"\u003e#268\u003c/a\u003e) \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.13.0\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOptimise \u003ccode\u003enaturalsize\u003c/code\u003e algorithm by using \u003ccode\u003emath.log\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/253\"\u003e#253\u003c/a\u003e) \u003ca href=\"https://github.com/Zaczero\"\u003e\u003ccode\u003e@​Zaczero\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eprecisedelta\u003c/code\u003e rounding (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/254\"\u003e#254\u003c/a\u003e) \u003ca href=\"https://github.com/dangillet\"\u003e\u003ccode\u003e@​dangillet\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.12.3\u003c/h2\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003enaturalsize\u003c/code\u003e for \u003ccode\u003efloat\u003c/code\u003e and \u003ccode\u003estr\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/250\"\u003e#250\u003c/a\u003e) \u003ca href=\"https://github.com/loicleyendecker\"\u003e\u003ccode\u003e@​loicleyendecker\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprovements for French translation (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/248\"\u003e#248\u003c/a\u003e) \u003ca href=\"https://github.com/merwok\"\u003e\u003ccode\u003e@​merwok\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/python-humanize/humanize/commit/2ddb5903cdc1c7e6eb6b083f4f99f73db50aecd9\"\u003e\u003ccode\u003e2ddb590\u003c/code\u003e\u003c/a\u003e Replace \u003ccode\u003eException\u003c/code\u003e with more specific \u003ccode\u003eFileNotFoundError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/286\"\u003e#286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-humanize/humanize/commit/e87f2e25660d3af2ea553ea8dc63bff99652bc94\"\u003e\u003ccode\u003ee87f2e2\u003c/code\u003e\u003c/a\u003e Add locale support for decimal separator in \u003ccode\u003eintword\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/287\"\u003e#287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-humanize/humanize/commit/717518400d6709cf7e9bebe4a9424eb3b1ebd60d\"\u003e\u003ccode\u003e7175184\u003c/code\u003e\u003c/a\u003e Add locale support for decimal separator in intword\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-humanize/humanize/commit/25269993e7ef021edaba620c96827ca21cc13d7e\"\u003e\u003ccode\u003e2526999\u003c/code\u003e\u003c/a\u003e Update config (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/285\"\u003e#285\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-humanize/humanize/commit/ba532d9ae45d1da89f3687259324365dc187ebca\"\u003e\u003ccode\u003eba532d9\u003c/code\u003e\u003c/a\u003e Replace Exception with more specific FileNotFoundError\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-humanize/humanize/commit/bdc49ea831cb3a79ba0155a57f27259cabb8cafd\"\u003e\u003ccode\u003ebdc49ea\u003c/code\u003e\u003c/a\u003e Don't ignore UP038, it's been removed from Ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-humanize/humanize/commit/86f116bda6698c3e03e0db5f7fcfd929a4ba9ad4\"\u003e\u003ccode\u003e86f116b\u003c/code\u003e\u003c/a\u003e Add seven-day cooldown to Renovate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-humanize/humanize/commit/e3f7116924dad455a87e85a5d7b8b7a07460fd57\"\u003e\u003ccode\u003ee3f7116\u003c/code\u003e\u003c/a\u003e No need for setup-python with prek-action\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-humanize/humanize/commit/3dca143f7884b928632f68449423d914531ca267\"\u003e\u003ccode\u003e3dca143\u003c/code\u003e\u003c/a\u003e \u003ccode\u003enaturaldelta\u003c/code\u003e: round the value to nearest unit that makes sense (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/272\"\u003e#272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-humanize/humanize/commit/bac6f269d7f51adcd62840db969c0a40fec8fd70\"\u003e\u003ccode\u003ebac6f26\u003c/code\u003e\u003c/a\u003e Apply suggestion from \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-humanize/humanize/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 `ipympl` from 0.9.7 to 0.10.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/ipympl/releases\"\u003eipympl's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev.0.10.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate snapshots bot checkout and permission check by \u003ca href=\"https://github.com/martinRenou\"\u003e\u003ccode\u003e@​martinRenou\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/614\"\u003ematplotlib/ipympl#614\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Pixi setup by \u003ca href=\"https://github.com/ianhi\"\u003e\u003ccode\u003e@​ianhi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/613\"\u003ematplotlib/ipympl#613\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFIX: Toolbar savefig respects rcparams by \u003ca href=\"https://github.com/ianhi\"\u003e\u003ccode\u003e@​ianhi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/615\"\u003ematplotlib/ipympl#615\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/matplotlib/ipympl/compare/v0.9.8...v0.10.0\"\u003ehttps://github.com/matplotlib/ipympl/compare/v0.9.8...v0.10.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eRelease 0.9.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake 'Usage' section in README consistent with current Basic Example at current documentation by \u003ca href=\"https://github.com/fomightez\"\u003e\u003ccode\u003e@​fomightez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/583\"\u003ematplotlib/ipympl#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: update release workflow by \u003ca href=\"https://github.com/ianhi\"\u003e\u003ccode\u003e@​ianhi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/590\"\u003ematplotlib/ipympl#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse thread lock to support comms via subshells by \u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/603\"\u003ematplotlib/ipympl#603\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse intersphinx_registry to keep intersphinx_mapping up to date. by \u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/604\"\u003ematplotlib/ipympl#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest on python 3.14 by \u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/606\"\u003ematplotlib/ipympl#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix doc build issues by \u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/605\"\u003ematplotlib/ipympl#605\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelease 0.9.8 by \u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/607\"\u003ematplotlib/ipympl#607\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/fomightez\"\u003e\u003ccode\u003e@​fomightez\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/583\"\u003ematplotlib/ipympl#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/604\"\u003ematplotlib/ipympl#604\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/matplotlib/ipympl/compare/0.9.7...v0.9.8\"\u003ehttps://github.com/matplotlib/ipympl/compare/0.9.7...v0.9.8\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/matplotlib/ipympl/commit/1ba859698404d9efba44ef3cb0b00dee0daa6c11\"\u003e\u003ccode\u003e1ba8596\u003c/code\u003e\u003c/a\u003e Bump version to 0.10.0 / 0.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/ipympl/commit/805057a60768867ab4c309e9380a99b286dcfef9\"\u003e\u003ccode\u003e805057a\u003c/code\u003e\u003c/a\u003e FIX: Toolbar savefig respects rcparams (\u003ca href=\"https://redirect.github.com/matplotlib/ipympl/issues/615\"\u003e#615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/ipympl/commit/5a81b503d3d7d1a08a71c1017e8ba066a516ada8\"\u003e\u003ccode\u003e5a81b50\u003c/code\u003e\u003c/a\u003e Add Pixi setup (\u003ca href=\"https://redirect.github.com/matplotlib/ipympl/issues/613\"\u003e#613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/ipympl/commit/57e60534aa7bf547f5d421052dedc3f455547504\"\u003e\u003ccode\u003e57e6053\u003c/code\u003e\u003c/a\u003e Update bot checkout (\u003ca href=\"https://redirect.github.com/matplotlib/ipympl/issues/614\"\u003e#614\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/ipympl/commit/0f19f0a2b6b3df37787368bdb3669663d833d7ac\"\u003e\u003ccode\u003e0f19f0a\u003c/code\u003e\u003c/a\u003e Release 0.9.8 (\u003ca href=\"https://redirect.github.com/matplotlib/ipympl/issues/607\"\u003e#607\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/ipympl/commit/00aa8af30a74ee32215253a965264da1e9a8eb14\"\u003e\u003ccode\u003e00aa8af\u003c/code\u003e\u003c/a\u003e Fix doc build issues (\u003ca href=\"https://redirect.github.com/matplotlib/ipympl/issues/605\"\u003e#605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/ipympl/commit/fe010195f05249fa8407ffbc8ec7f940c9219358\"\u003e\u003ccode\u003efe01019\u003c/code\u003e\u003c/a\u003e Test on python 3.14 (\u003ca href=\"https://redirect.github.com/matplotlib/ipympl/issues/606\"\u003e#606\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/ipympl/commit/6ee18b822e4558c4bcbdb7d255e17c3220c5a391\"\u003e\u003ccode\u003e6ee18b8\u003c/code\u003e\u003c/a\u003e Use intersphinx_registry to keep intersphinx_mapping up to date. (\u003ca href=\"https://redirect.github.com/matplotlib/ipympl/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/ipympl/commit/1ef9f671cba3e2424fbe55126151e43d07dc5b04\"\u003e\u003ccode\u003e1ef9f67\u003c/code\u003e\u003c/a\u003e Use thread lock to support comms via subshells (\u003ca href=\"https://redirect.github.com/matplotlib/ipympl/issues/603\"\u003e#603\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/ipympl/commit/5e068ed222427919cc20c406e34d02ba9be55cc3\"\u003e\u003ccode\u003e5e068ed\u003c/code\u003e\u003c/a\u003e build: update release workflow (\u003ca href=\"https://redirect.github.com/matplotlib/ipympl/issues/590\"\u003e#590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/ipympl/compare/0.9.7...v0.10.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ipywidgets` from 8.1.6 to 8.1.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jupyter-widgets/ipywidgets/releases\"\u003eipywidgets's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.1.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd JupyterCon banner and jupyter colors by \u003ca href=\"https://github.com/choldgraf\"\u003e\u003ccode\u003e@​choldgraf\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jupyter-widgets/ipywidgets/pull/3998\"\u003ejupyter-widgets/ipywidgets#3998\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix badge formatting in README.md by \u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jupyter-widgets/ipywidgets/pull/4000\"\u003ejupyter-widgets/ipywidgets#4000\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Plausible web stats by \u003ca href=\"https://github.com/jasongrout\"\u003e\u003ccode\u003e@​jasongrout\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jupyter-widgets/ipywidgets/pull/4003\"\u003ejupyter-widgets/ipywidgets#4003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate jupyterlab_widgets metadata to indicate it works with JupyterLab 4 by \u003ca href=\"https://github.com/jasongrout\"\u003e\u003ccode\u003e@​jasongrout\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jupyter-widgets/ipywidgets/pull/4004\"\u003ejupyter-widgets/ipywidgets#4004\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/choldgraf\"\u003e\u003ccode\u003e@​choldgraf\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jupyter-widgets/ipywidgets/pull/3998\"\u003ejupyter-widgets/ipywidgets#3998\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jupyter-widgets/ipywidgets/compare/8.1.7...8.1.8\"\u003ehttps://github.com/jupyter-widgets/ipywidgets/compare/8.1.7...8.1.8\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e8.1.7\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix CI + remove Python 3.8 by \u003ca href=\"https://github.com/martinRenou\"\u003e\u003ccode\u003e@​martinRenou\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jupyter-widgets/ipywidgets/pull/3989\"\u003ejupyter-widgets/ipywidgets#3989\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDynamic widgets registry by \u003ca href=\"https://github.com/martinRenou\"\u003e\u003ccode\u003e@​martinRenou\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jupyter-widgets/ipywidgets/pull/3988\"\u003ejupyter-widgets/ipywidgets#3988\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jupyter-widgets/ipywidgets/compare/8.1.6...8.1.7\"\u003ehttps://github.com/jupyter-widgets/ipywidgets/compare/8.1.6...8.1.7\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\u003eSee full diff in \u003ca href=\"https://github.com/jupyter-widgets/ipywidgets/compare/8.1.6...8.1.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jupyterlab` from 4.4.1 to 4.5.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jupyterlab/jupyterlab/releases\"\u003ejupyterlab's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.5.3\u003c/h2\u003e\n\u003ch2\u003e4.5.3\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/jupyterlab/jupyterlab/compare/v4.5.2...a3c7cc66c59cc260de9abe56d0d9aaba824d2036\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix error in console when the debugger switch from a module to another \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18352\"\u003e#18352\u003c/a\u003e (\u003ca href=\"https://github.com/brichet\"\u003e\u003ccode\u003e@​brichet\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix focus of replace buttons in the document search box \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18362\"\u003e#18362\u003c/a\u003e (\u003ca href=\"https://github.com/IsabelParedes\"\u003e\u003ccode\u003e@​IsabelParedes\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate CodeMirror to latest versions \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18344\"\u003e#18344\u003c/a\u003e (\u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix deferred cell loading in \u003ccode\u003edefer\u003c/code\u003e and \u003ccode\u003econtentVisibility\u003c/code\u003e windowing mode \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18359\"\u003e#18359\u003c/a\u003e (\u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBackport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18349\"\u003e#18349\u003c/a\u003e: Fix \u0026quot;Open With \u0026gt; Editor\u0026quot; for \u003ccode\u003e.py\u003c/code\u003e files, update \u003ccode\u003e@lumino\u003c/code\u003e packages to \u003ccode\u003ev2026.1.15\u003c/code\u003e \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18351\"\u003e#18351\u003c/a\u003e (\u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/aaron-seq\"\u003e\u003ccode\u003e@​aaron-seq\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix UI tests: config useSystemClipboardForCells=true for notebook toolbar test \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18335\"\u003e#18335\u003c/a\u003e (\u003ca href=\"https://github.com/brichet\"\u003e\u003ccode\u003e@​brichet\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove generated docs files from the repo \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18340\"\u003e#18340\u003c/a\u003e (\u003ca href=\"https://github.com/jtpio\"\u003e\u003ccode\u003e@​jtpio\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd installation instructions for JupyterLab with uv \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18363\"\u003e#18363\u003c/a\u003e (\u003ca href=\"https://github.com/jimangel\"\u003e\u003ccode\u003e@​jimangel\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003eThe following people contributed discussions, new ideas, code and documentation contributions, and review.\nSee \u003ca href=\"https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports\"\u003eour definition of contributors\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/jupyterlab/jupyterlab/graphs/contributors?from=2026-01-12\u0026amp;to=2026-01-23\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aaron-seq\"\u003e\u003ccode\u003e@​aaron-seq\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aaaron-seq+updated%3A2026-01-12..2026-01-23\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/brichet\"\u003e\u003ccode\u003e@​brichet\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Abrichet+updated%3A2026-01-12..2026-01-23\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/IsabelParedes\"\u003e\u003ccode\u003e@​IsabelParedes\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AIsabelParedes+updated%3A2026-01-12..2026-01-23\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/jimangel\"\u003e\u003ccode\u003e@​jimangel\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajimangel+updated%3A2026-01-12..2026-01-23\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/jtpio\"\u003e\u003ccode\u003e@​jtpio\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajtpio+updated%3A2026-01-12..2026-01-23\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Akrassowski+updated%3A2026-01-12..2026-01-23\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003ev4.5.2\u003c/h2\u003e\n\u003ch2\u003e4.5.2\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/jupyterlab/jupyterlab/compare/v4.5.1...bb13be16887be7116f086da699bd09208042e2b6\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBackport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18250\"\u003e#18250\u003c/a\u003e: Make system clipboard opt-in \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18319\"\u003e#18319\u003c/a\u003e (\u003ca href=\"https://github.com/Darshan808\"\u003e\u003ccode\u003e@​Darshan808\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix empty math block throws codemirror's error \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18308\"\u003e#18308\u003c/a\u003e (\u003ca href=\"https://github.com/i-aki-y\"\u003e\u003ccode\u003e@​i-aki-y\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix cell footer width for smaller screens \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18276\"\u003e#18276\u003c/a\u003e (\u003ca href=\"https://github.com/MUFFANUJ\"\u003e\u003ccode\u003e@​MUFFANUJ\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix scrolling to anchor from ToC/links in Markdown and HTML with data attributes \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18208\"\u003e#18208\u003c/a\u003e (\u003ca href=\"https://github.com/pranshugupta01\"\u003e\u003ccode\u003e@​pranshugupta01\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix merge breaking rendering cell order in \u003ccode\u003edefer\u003c/code\u003e mode \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18220\"\u003e#18220\u003c/a\u003e (\u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix inverted Unicode surrogate checks \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18209\"\u003e#18209\u003c/a\u003e (\u003ca href=\"https://github.com/JamesWrigley\"\u003e\u003ccode\u003e@​JamesWrigley\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\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/jupyterlab/jupyterlab/commit/26776604839d9174cc6239089372d5cfbe0a9957\"\u003e\u003ccode\u003e2677660\u003c/code\u003e\u003c/a\u003e [ci skip] Publish 4.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/a3c7cc66c59cc260de9abe56d0d9aaba824d2036\"\u003e\u003ccode\u003ea3c7cc6\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18344\"\u003e#18344\u003c/a\u003e on branch 4.5.x (Update CodeMirror to latest versions) (\u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/6859dddcbf060c7cd88831c1ca9da7adebcdc3ec\"\u003e\u003ccode\u003e6859ddd\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18352\"\u003e#18352\u003c/a\u003e: Fix error in console when the debugger switch from a modu...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/1dff9c60cdfad7946960ec3fab95a004058207b4\"\u003e\u003ccode\u003e1dff9c6\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18362\"\u003e#18362\u003c/a\u003e: Fix focus of replace buttons in the document search box (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/7e496829cb6e126ed5f442add70ef97a6149a81b\"\u003e\u003ccode\u003e7e49682\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18363\"\u003e#18363\u003c/a\u003e: Add installation instructions for JupyterLab with uv (\u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18\"\u003e#18\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/06736b57ffb7fcacd997ac22f37e6b582510a4be\"\u003e\u003ccode\u003e06736b5\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18359\"\u003e#18359\u003c/a\u003e: Fix deferred cell loading in \u003ccode\u003edefer\u003c/code\u003e and `contentVisibili...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/36885449617f3f958269325c3f54bbeeb6682b01\"\u003e\u003ccode\u003e3688544\u003c/code\u003e\u003c/a\u003e Fix \u0026quot;Open With \u0026gt; Editor\u0026quot; for \u003ccode\u003e.py\u003c/code\u003e files, update \u003ccode\u003e@lumino\u003c/code\u003e packages to `v2026...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/ec399e0bf66b783a222279cf0adb645040a3f8a6\"\u003e\u003ccode\u003eec399e0\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18335\"\u003e#18335\u003c/a\u003e: Fix UI tests: config useSystemClipboardForCells=true for ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/bb5cb96c28706449dece0a9aadf5b6ab47adc3c4\"\u003e\u003ccode\u003ebb5cb96\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18340\"\u003e#18340\u003c/a\u003e: Remove generated docs files from the repo (\u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18341\"\u003e#18341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/cdf27466ff03fac430b2a9f3b4b61d238487ac5d\"\u003e\u003ccode\u003ecdf2746\u003c/code\u003e\u003c/a\u003e [ci skip] Publish 4.5.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jupyterlab/jupyterlab/compare/@jupyterlab/lsp@4.4.1...@jupyterlab/lsp@4.5.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.10.1 to 3.10.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: v3.10.8\u003c/h2\u003e\n\u003cp\u003eThis is a bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eThe primary highlights of this release are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eProperly allow freethreaded mode in the MacOS backend\u003c/li\u003e\n\u003cli\u003eBetter error handling for MacOS backend\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eREL: v3.10.7\u003c/h2\u003e\n\u003cp\u003eThis is the latest bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eThe most important update in this release is that the minimum version\nof \u003ccode\u003epyparsing\u003c/code\u003e has been updated to version 3.0.\u003c/p\u003e\n\u003ch2\u003eREL: v3.10.6\u003c/h2\u003e\n\u003cp\u003eThis is a bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eHighlights from this release include:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e- Fix regression of hi-dpi support for Qt\n- Fix race condition in TexManager.make_dvi \u0026amp; make_png\n- Various documentation and other bugfixes\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eREL: v3.10.5\u003c/h2\u003e\n\u003cp\u003eThis is the fourth bugfix release of the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eIncluded in this release is distributed wheels for Python 3.14 (including freethreaded) and Windows ARM.\u003c/p\u003e\n\u003cp\u003eThere are also several smaller bugfixes.\u003c/p\u003e\n\u003ch2\u003eREL: v3.10.3\u003c/h2\u003e\n\u003cp\u003eThis is the third bugfix release of the 3.10.x series\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/matplotlib/matplotlib/commit/1392cbe3c79cdb93f9282747841d648770f60249\"\u003e\u003ccode\u003e1392cbe\u003c/code\u003e\u003c/a\u003e REL: v3.10.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/0b9ebb35f8310f22eb7f932b2ae14befb1f40b6f\"\u003e\u003ccode\u003e0b9ebb3\u003c/code\u003e\u003c/a\u003e Doc release prep v3.10.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/bc7b5c4377ce2544e8936255c51c1ff7cd0c5a85\"\u003e\u003ccode\u003ebc7b5c4\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.10.7-doc' into v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/86b38d3f29aa2af2ddcbd1895433117caa0fba47\"\u003e\u003ccode\u003e86b38d3\u003c/code\u003e\u003c/a\u003e Github stats v3.10.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/9512188e42f9d221f83869113c44f99fe1832a0f\"\u003e\u003ccode\u003e9512188\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30717\"\u003e#30717\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-30714-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/d300769285e2c920804134e40ec83837eabe16d8\"\u003e\u003ccode\u003ed300769\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30714\"\u003e#30714\u003c/a\u003e: FIX: Gracefully handle numpy arrays as input to check_in_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/799bc9561daea5b5578f888817cb45c9321a0463\"\u003e\u003ccode\u003e799bc95\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30711\"\u003e#30711\u003c/a\u003e from ngoldbaum/v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/134000ba19a4354da2ad1084627039e05c936754\"\u003e\u003ccode\u003e134000b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30697\"\u003e#30697\u003c/a\u003e from ngoldbaum/fix-plotting-on-worker-threads\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/5b8e219d70f1daa443330eb6a5a6211506b37362\"\u003e\u003ccode\u003e5b8e219\u003c/code\u003e\u003c/a\u003e TST: Run macosx backends in a subprocess\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/878e71a95006d3aec9505f3bd836968951fdd163\"\u003e\u003ccode\u003e878e71a\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/29810\"\u003e#29810\u003c/a\u003e: Declare free-threaded support in MacOS backend extension ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.10.1...v3.10.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib-stubs` from 0.2.0 to 0.3.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/releases\"\u003ematplotlib-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.3.11\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev0.3.10\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev0.3.9\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix broken import in \u003ccode\u003ematplotlib.pyplot.plot_date\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.3.8\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ematplotlib.pyplot.xlim\u003c/code\u003e and \u003ccode\u003ematplotlib.pyplot.ylim\u003c/code\u003e overloads, including datetime support\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.3.7\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev0.3.6\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ematplotlib.axes.Axes.set_xticks\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ematplotlib.axes.Axes.bar\u003c/code\u003e to support datetime sequences\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.3.5\u003c/h2\u003e\n\u003cp\u003eFix \u003ccode\u003ematplotlib.pyplot.plot\u003c/code\u003e to allow using datetime sequences.\u003c/p\u003e\n\u003ch2\u003ev0.3.4\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eComplete type hints for:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.subplots_adjust\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.subplots\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.subplot_mosaic\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.3.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eComplete \u003ccode\u003ematplotlib.pyplot.text\u003c/code\u003e's type hints\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ematplotlib.cm.colors\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.3.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ematplotlib.cm\u003c/code\u003e's colormaps\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.3.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd return type to \u003ccode\u003eplt.ylabel\u003c/code\u003e and \u003ccode\u003eplt.xlabel\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix/refine argument types for \u003ccode\u003eplt.savefig\u003c/code\u003e, \u003ccode\u003eplt.plot\u003c/code\u003e and \u003ccode\u003eplt.scatter\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.3.0\u003c/h2\u003e\n\u003cp\u003eImprove type hints for the following functions:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.close()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.figure()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.legend()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.plot()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.savefig()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.scatter()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.title()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.xlabel()\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/hoel-bagard/matplotlib-stubs/blob/master/CHANGELOG.md\"\u003ematplotlib-stubs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.11 - 2025-10-23\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd type hints for \u003ccode\u003ematplotlib.pyplot\u003c/code\u003e's \u003ccode\u003eshow\u003c/code\u003e, \u003ccode\u003etight_layout\u003c/code\u003e, \u003ccode\u003ebar\u003c/code\u003e, \u003ccode\u003exticks\u003c/code\u003e and \u003ccode\u003eyticks\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.10 - 2025-10-22\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ematplotlib.pyplot.loglog\u003c/code\u003e type hints\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.9 - 2025-10-22\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix broken import in \u003ccode\u003ematplotlib.pyplot.plot_date\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.8 - 2025-10-22\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ematplotlib.pyplot.xlim\u003c/code\u003e and \u003ccode\u003ematplotlib.pyplot.ylim\u003c/code\u003e overloads, including datetime support\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.7 - 2025-10-21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ematplotlib.pyplot.axhline\u003c/code\u003e's kwargs type\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.6 - 2025-10-19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ematplotlib.axes.Axes.set_xticks\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ematplotlib.axes.Axes.bar\u003c/code\u003e to support datetime sequences\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.5 - 2025-10-14\u003c/h2\u003e\n\u003cp\u003eFix \u003ccode\u003ematplotlib.pyplot.plot\u003c/code\u003e to allow using datetime sequences.\u003c/p\u003e\n\u003ch2\u003e0.3.4 - 2025-09-11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eComplete type hints for:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.subplots_adjust\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.subplots\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.subplot_mosaic\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.3 - 2025-09-04\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eComplete \u003ccode\u003ematplotlib.pyplot.text\u003c/code\u003e's type hints\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ematplotlib.cm.colors\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.2] - 2025-08-07\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ematplotlib.cm\u003c/code\u003e's colormaps\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.1] - 2025-08-04\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd return type to \u003ccode\u003eplt.ylabel\u003c/code\u003e and \u003ccode\u003eplt.xlabel\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix/refine argument types for \u003ccode\u003eplt.savefig\u003c/code\u003e, \u003ccode\u003eplt.plot\u003c/code\u003e and \u003ccode\u003eplt.scatter\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/commit/59fdaf216331aa54996e5f1149e6ee096ca63557\"\u003e\u003ccode\u003e59fdaf2\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/commit/b85c0f74cd4587d8f9ccdb0a65639981ca29bfaa\"\u003e\u003ccode\u003eb85c0f7\u003c/code\u003e\u003c/a\u003e feat: add type hints for show, tight_layout, bar, xticks and yticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/commit/8afc8f4122949daaa447febe9b715feaaa13da59\"\u003e\u003ccode\u003e8afc8f4\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.3.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/commit/f9de850ed9f5662672ec663e2b88619b42d34e5a\"\u003e\u003ccode\u003ef9de850\u003c/code\u003e\u003c/a\u003e feat: add type hints to plt.loglog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/commit/4ffefa652da3881b576823b003e695d8c4ad0dbe\"\u003e\u003ccode\u003e4ffefa6\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/commit/e6a54149513cf96fab1c8e35ae1589a5106a46c2\"\u003e\u003ccode\u003ee6a5414\u003c/code\u003e\u003c/a\u003e fix: broken import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/commit/90b7235400fd1467a85ccf3ff06a5c068cd4e410\"\u003e\u003ccode\u003e90b7235\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/commit/af0f45827cda237040c46dd126530a0971e41758\"\u003e\u003ccode\u003eaf0f458\u003c/code\u003e\u003c/a\u003e feat: add xlim and ylim overloads\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/commit/5d5ab771404092929deacaef66cc8efe625a4752\"\u003e\u003ccode\u003e5d5ab77\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.3.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/commit/5f5a9e46f14de1072f07eb865af4d552a553672c\"\u003e\u003ccode\u003e5f5a9e4\u003c/code\u003e\u003c/a\u003e fix: add axhline kwargs type\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/compare/0.2.0...v0.3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `networkx` from 3.4.2 to 3.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/networkx/networkx/releases\"\u003enetworkx's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eNetworkX 3.6.1\u003c/h2\u003e\n\u003ch1\u003enetworkx 3.6.1\u003c/h1\u003e\n\u003cp\u003eWe're happy to announce the release of networkx 3.6.1!\u003c/p\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd spectral bipartition community finding and greedy bipartition using node swaps (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8347\"\u003e#8347\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eNodelists for \u003ccode\u003efrom_biadjacency_matrix\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/7993\"\u003e#7993\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd spectral bipartition community finding and greedy bipartition using node swaps (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8347\"\u003e#8347\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix draw_networkx_nodes with list node_shape and add regression test (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8363\"\u003e#8363\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: allow graph subclasses to have additional arguments (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8369\"\u003e#8369\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDOC: Improve benchmarking readme (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8358\"\u003e#8358\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDOC: More details re: RC releases in the release process devdocs (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8346\"\u003e#8346\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDOC: clarify difference between G.nodes/G.nodes() and G.edges/G.edges() in tutorial (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8300\"\u003e#8300\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDOC: Add blurb to contributor guide about drawing tests (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8370\"\u003e#8370\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDOC: Fix underline lens in docstrings (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8371\"\u003e#8371\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRolling back shortest paths links (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8373\"\u003e#8373\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMAINT: Replace string literal with comment (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8359\"\u003e#8359\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the actions group (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8360\"\u003e#8360\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003epin python 3.14 to be version 3.14.0 until dataclasses are fixed (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8365\"\u003e#8365\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eBlocklist Python 3.14.1 (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8372\"\u003e#8372\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTST: add tests for unsupported graph types in MST algorithms (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8353\"\u003e#8353\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eTST: clean up isomorphism tests (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8364\"\u003e#8364\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003e10 authors added to this release (alphabetically):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Aka2210\"\u003e\u003ccode\u003e@​Aka2210\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jfinkels\"\u003e\u003ccode\u003e@​jfinkels\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NaorTIRAM\"\u003e\u003ccode\u003e@​NaorTIRAM\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAditi Juneja (\u003ca href=\"https://github.com/Schefflera-Arboricola\"\u003e\u003ccode\u003e@​Schefflera-Arboricola\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAlejandro Candioti (\u003ca href=\"https://github.com/amcandio\"\u003e\u003ccode\u003e@​amcandio\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColman Bouton (\u003ca href=\"https://github.com/LorentzFactor\"\u003e\u003ccode\u003e@​LorentzFactor\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/networkx/networkx/commit/7530809bfa1ea7ed6fdf918a4d1431488953cb1f\"\u003e\u003ccode\u003e7530809\u003c/code\u003e\u003c/a\u003e Designate 3.6.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/4788eb08f2492dd6bf6f97ce8ee07cd52aa6cf89\"\u003e\u003ccode\u003e4788eb0\u003c/code\u003e\u003c/a\u003e Rolling back shortest paths links (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8373\"\u003e#8373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/696edb6efbbbb622959e96f1276fc0db68dc0954\"\u003e\u003ccode\u003e696edb6\u003c/code\u003e\u003c/a\u003e Fix draw_networkx_nodes with list node_shape and add regression test  (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8363\"\u003e#8363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/c38830c61a6fee3ee10f216071bb63cb9b92bfb9\"\u003e\u003ccode\u003ec38830c\u003c/code\u003e\u003c/a\u003e Blocklist Python 3.14.1 (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8372\"\u003e#8372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/81d231141b08600ebfd1c781e28ecbf791e94016\"\u003e\u003ccode\u003e81d2311\u003c/code\u003e\u003c/a\u003e DOC: Fix underline lens in docstrings. (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8371\"\u003e#8371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/a6e2bfadef51dda47df6466b32642e0d428c5801\"\u003e\u003ccode\u003ea6e2bfa\u003c/code\u003e\u003c/a\u003e DOC: Add blurb to contributor guide about drawing tests. (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8370\"\u003e#8370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/96b628295eff29d266e1c75355556fc9fe58cc16\"\u003e\u003ccode\u003e96b6282\u003c/code\u003e\u003c/a\u003e DOC: clarify difference between G.nodes/G.nodes() and G.edges/G.edges() in tu...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/75bdd737ca8382d06eb76ff9018a81870c9f3443\"\u003e\u003ccode\u003e75bdd73\u003c/code\u003e\u003c/a\u003e Fix: allow graph subclasses to have additional arguments (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8369\"\u003e#8369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/7663fa5e5fd73d6921410a18c7ac4116ffa04f4d\"\u003e\u003ccode\u003e7663fa5\u003c/code\u003e\u003c/a\u003e TST: clean up isomorphism tests (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8364\"\u003e#8364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/3dacd1bdcbd976b9e148a60ddebafd868c0a52f3\"\u003e\u003ccode\u003e3dacd1b\u003c/code\u003e\u003c/a\u003e Add spectral bipartition community finding and greedy bipartition using node ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/networkx/networkx/compare/networkx-3.4.2...networkx-3.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pandas-stubs` from 2.2.3.250308 to 2.3.3.260113\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas-stubs/commit/0cb16c482b2350047d51e5954e9d8bc5ff40f4d0\"\u003e\u003ccode\u003e0cb16c4\u003c/code\u003e\u003c/a\u003e Version 2.3.3.260113\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas-stubs/commit/bf9a74aa3092f59193f3ca26aae2d9e0c63a813f\"\u003e\u003ccode\u003ebf9a74a\u003c/code\u003e\u003c/a\u003e TYP: bump \u003ccode\u003ety\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas-stubs/issues/1630\"\u003e#1630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas-stubs/commit/db79b540b34c76ec5a710d366638d2b4949f5bc4\"\u003e\u003ccode\u003edb79b54\u003c/code\u003e\u003c/a\u003e TST: numeric arrays (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas-stubs/issues/1618\"\u003e#1618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas-stubs/commit/a0d8f9cedd7b1af11ad344b1717402425f403551\"\u003e\u003ccode\u003ea0d8f9c\u003c/code\u003e\u003c/a\u003e GH1614 Add more agg func methods for pivot_table (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas-stubs/issues/1623\"\u003e#1623\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas-stubs/commit/2c83c1fca90b14b2439d3312494642d7c52fd45e\"\u003e\u003ccode\u003e2c83c1f\u003c/code\u003e\u003c/a\u003e BUG: regression on \u003ca href=\"https://redirect.github.com/pandas-dev/pandas-stubs/issues/1594\"\u003e#1594\u003c/a\u003e for nightly (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas-stubs/issues/1620\"\u003e#1620\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas-stubs/commit/78fcc5b9da0aba3dda336624bf12f29b9b1214c4\"\u003e\u003ccode\u003e78fcc5b\u003c/code\u003e\u003c/a\u003e TYP: GH1614 Add more agg func methods for \u003ccode\u003epivot_table\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas-stubs/issues/1615\"\u003e#1615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas-stubs/commit/cf423fdf17933fbf546cb129e9fc4df08c780724\"\u003e\u003ccode\u003ecf423fd\u003c/code\u003e\u003c/a\u003e CLN: move tests for \u003ccode\u003eSeries.astype\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas-stubs/issues/1611\"\u003e#1611\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas-stubs/commit/0954c0db562e7e868b1839b4adcb2b049e9136e0\"\u003e\u003ccode\u003e0954c0d\u003c/code\u003e\u003c/a\u003e BUG: rename to \u003ccode\u003eNoDefaultDoNotUse\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas-stubs/issues/1616\"\u003e#1616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas-stubs/commit/b54625adb16fad269b0ea420436a95f24002e5c7\"\u003e\u003ccode\u003eb54625a\u003c/code\u003e\u003c/a\u003e TST: \u003ccode\u003exStringArray\u003c/code\u003e and \u003ccode\u003eNumpyExtensionArray\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas-stubs/issues/1594\"\u003e#1594\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas-stubs/commit/df2ebd03248496f309cfdb87719de3f659530eb7\"\u003e\u003ccode\u003edf2ebd0\u003c/code\u003e\u003c/a\u003e DEPR: \u003ccode\u003eravel\u003c/code\u003e in \u003ccode\u003eIndex\u003c/code\u003e and \u003ccode\u003eSeries\u003c/code\u003e \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/36900\"\u003epandas-dev/pandas#36900\u003c/a\u003e pandas-dev/pand...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pandas-dev/pandas-stubs/compare/v2.2.3.250308...v2.3.3.260113\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prettytable` from 3.16.0 to 3.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/prettytable/prettytable/releases\"\u003eprettytable's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.17.0\u003c/h2...\n\n_Description has been truncated_","html_url":"https://github.com/sjwiesman/materialize/pull/469","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjwiesman%2Fmaterialize/issues/469","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/469/packages"},{"uuid":"3852491243","node_id":"PR_kwDOQUpdgs6_MesG","number":1,"state":"open","title":"chore(deps): bump websocket-client from 1.8.0 to 1.9.0","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-25T03:39:09.000Z","updated_at":"2026-01-25T03:39:09.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":null,"ecosystem":"pip"},"body":"Bumps [websocket-client](https://github.com/websocket-client/websocket-client) from 1.8.0 to 1.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e1.9.0\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6861ee417b65c183a81671bc57cace26c9c7ee29\"\u003e\u003ccode\u003e6861ee4\u003c/code\u003e\u003c/a\u003e Use ipaddress module for no_proxy parsing (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/729bdb8fc063397d298261ed6f2288f272b7f6de\"\u003e\u003ccode\u003e729bdb8\u003c/code\u003e\u003c/a\u003e Coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/f22579afed961d89a306d0018f373922bf567d22\"\u003e\u003ccode\u003ef22579a\u003c/code\u003e\u003c/a\u003e Linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/9564030bed1112497bf1c879673870419365a064\"\u003e\u003ccode\u003e9564030\u003c/code\u003e\u003c/a\u003e Change echo URL in docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/c0fe0f7a18867599c9b62fc61f71036a8d5bdfcf\"\u003e\u003ccode\u003ec0fe0f7\u003c/code\u003e\u003c/a\u003e apply black formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/813d570fc95114aa48e8ddf8b767390a1a6985f7\"\u003e\u003ccode\u003e813d570\u003c/code\u003e\u003c/a\u003e Resolve all mypy errors, with AI assistance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6020f37e784b77f6627b38797595f038aa76f26e\"\u003e\u003ccode\u003e6020f37\u003c/code\u003e\u003c/a\u003e black formatting fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.8.0...v1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=websocket-client\u0026package-manager=pip\u0026previous-version=1.8.0\u0026new-version=1.9.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/MMeffert/control4-hvac-data-exporter/pull/1","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MMeffert%2Fcontrol4-hvac-data-exporter/issues/1","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1/packages"},{"uuid":"3842355823","node_id":"PR_kwDOQf0FPs6-qr2A","number":23,"state":"open","title":"chore(deps): bump the python-minor-patch group across 1 directory with 65 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-22T10:49:55.000Z","updated_at":"2026-01-22T10:50:00.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor-patch","update_count":65,"packages":[{"name":"streamlit","old_version":"1.28.0","new_version":"1.50.0","repository_url":"https://github.com/streamlit/streamlit"},{"name":"python-dotenv","old_version":"1.0.0","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"mypy","old_version":"1.7.1","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"scikit-learn","old_version":"1.3.2","new_version":"1.6.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"statsmodels","old_version":"0.14.1","new_version":"0.14.6","repository_url":"https://github.com/statsmodels/statsmodels"},{"name":"matplotlib","old_version":"3.8.2","new_version":"3.9.4","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"seaborn","old_version":"0.13.0","new_version":"0.13.2","repository_url":"https://github.com/mwaskom/seaborn"},{"name":"celery","old_version":"5.3.4","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"scipy","old_version":"1.11.4","new_version":"1.13.1","repository_url":"https://github.com/scipy/scipy"},{"name":"anthropic","old_version":"0.8.1","new_version":"0.76.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"spacy","old_version":"3.7.2","new_version":"3.8.11","repository_url":"https://github.com/explosion/spaCy"},{"name":"transformers","old_version":"4.36.2","new_version":"4.57.6","repository_url":"https://github.com/huggingface/transformers"},{"name":"textblob","old_version":"0.17.1","new_version":"0.19.0","repository_url":"https://github.com/sloria/TextBlob"},{"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.39.0"},{"name":"pydantic","old_version":"2.5.2","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.1.0","new_version":"2.11.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"python-jose","old_version":"3.3.0","new_version":"3.5.0"},{"name":"python-multipart","old_version":"0.0.6","new_version":"0.0.20","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"openpyxl","old_version":"3.1.2","new_version":"3.1.5"},{"name":"psycopg2-binary","old_version":"2.9.9","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"playwright","old_version":"1.40.0","new_version":"1.57.0","repository_url":"https://github.com/microsoft/playwright-python"},{"name":"pytest-mock","old_version":"3.12.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"bandit","old_version":"1.7.5","new_version":"1.8.6","repository_url":"https://github.com/PyCQA/bandit"},{"name":"factory-boy","old_version":"3.3.0","new_version":"3.3.3","repository_url":"https://github.com/FactoryBoy/factory_boy"},{"name":"httpx","old_version":"0.25.2","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"selenium","old_version":"4.16.0","new_version":"4.36.0","repository_url":"https://github.com/SeleniumHQ/Selenium"},{"name":"jsonschema","old_version":"4.20.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"prometheus-client","old_version":"0.19.0","new_version":"0.24.1","repository_url":"https://github.com/prometheus/client_python"},{"name":"python-docx","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/python-openxml/python-docx"},{"name":"pytesseract","old_version":"0.3.10","new_version":"0.3.13","repository_url":"https://github.com/madmaze/pytesseract"},{"name":"alembic","old_version":"1.13.1","new_version":"1.16.5","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"cerberus","old_version":"1.3.5","new_version":"1.3.8","repository_url":"https://github.com/pyeve/cerberus"},{"name":"beautifulsoup4","old_version":"4.12.3","new_version":"4.14.3"},{"name":"celery","old_version":"5.3.4","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"kombu","old_version":"5.3.4","new_version":"5.6.2","repository_url":"https://github.com/celery/kombu"},{"name":"billiard","old_version":"4.2.0","new_version":"4.2.4","repository_url":"https://github.com/celery/billiard"},{"name":"sqlalchemy","old_version":"2.0.23","new_version":"2.0.46","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"asyncpg","old_version":"0.29.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"orjson","old_version":"3.9.10","new_version":"3.11.5","repository_url":"https://github.com/ijl/orjson"},{"name":"msgpack","old_version":"1.0.7","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"dynaconf","old_version":"3.2.4","new_version":"3.2.12","repository_url":"https://github.com/dynaconf/dynaconf"},{"name":"nltk","old_version":"3.8.1","new_version":"3.9.2","repository_url":"https://github.com/nltk/nltk"},{"name":"lru-dict","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/amitdev/lru-dict"},{"name":"pyjwt","old_version":"2.8.0","new_version":"2.10.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"jupyter","old_version":"1.0.0","new_version":"1.1.1"},{"name":"supervisor","old_version":"4.2.5","new_version":"4.3.0","repository_url":"https://github.com/Supervisor/supervisor"},{"name":"setproctitle","old_version":"1.3.3","new_version":"1.3.7","repository_url":"https://github.com/dvarrazzo/py-setproctitle"},{"name":"lz4","old_version":"4.3.2","new_version":"4.4.5","repository_url":"https://github.com/python-lz4/python-lz4"},{"name":"zstandard","old_version":"0.22.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"transitions","old_version":"0.9.0","new_version":"0.9.3","repository_url":"https://github.com/pytransitions/transitions"},{"name":"python-dateutil","old_version":"2.8.2","new_version":"2.9.0.post0","repository_url":"https://github.com/dateutil/dateutil"},{"name":"uvloop","old_version":"0.19.0","new_version":"0.22.1","repository_url":"https://github.com/MagicStack/uvloop"},{"name":"ujson","old_version":"5.8.0","new_version":"5.11.0","repository_url":"https://github.com/ultrajson/ultrajson"},{"name":"py-spy","old_version":"0.3.14","new_version":"0.4.1","repository_url":"https://github.com/benfred/py-spy"},{"name":"onnxruntime","old_version":"1.16.3","new_version":"1.20.1","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"requests","old_version":"2.31.0","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"scrapy","old_version":"2.11.0","new_version":"2.13.4","repository_url":"https://github.com/scrapy/scrapy"},{"name":"tweepy","old_version":"4.14.0","new_version":"4.16.0","repository_url":"https://github.com/tweepy/tweepy"},{"name":"praw","old_version":"7.7.1","new_version":"7.8.1","repository_url":"https://github.com/praw-dev/praw"},{"name":"feedparser","old_version":"6.0.10","new_version":"6.0.12","repository_url":"https://github.com/kurtmckee/feedparser"},{"name":"tokenizers","old_version":"0.15.1","new_version":"0.22.2","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"websocket-client","old_version":"1.6.4","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"asyncio-mqtt","old_version":"0.13.0","new_version":"0.16.2","repository_url":"https://github.com/sbtinstruments/asyncio-mqtt"},{"name":"coverage","old_version":"7.4.0","new_version":"7.10.7","repository_url":"https://github.com/coveragepy/coveragepy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 65 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.28.0` | `1.50.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.0` | `1.2.1` |\n| [mypy](https://github.com/python/mypy) | `1.7.1` | `1.19.1` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.3.2` | `1.6.1` |\n| [statsmodels](https://github.com/statsmodels/statsmodels) | `0.14.1` | `0.14.6` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.8.2` | `3.9.4` |\n| [seaborn](https://github.com/mwaskom/seaborn) | `0.13.0` | `0.13.2` |\n| [celery](https://github.com/celery/celery) | `5.3.4` | `5.6.2` |\n| [scipy](https://github.com/scipy/scipy) | `1.11.4` | `1.13.1` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `0.8.1` | `0.76.0` |\n| [spacy](https://github.com/explosion/spaCy) | `3.7.2` | `3.8.11` |\n| [transformers](https://github.com/huggingface/transformers) | `4.36.2` | `4.57.6` |\n| [textblob](https://github.com/sloria/TextBlob) | `0.17.1` | `0.19.0` |\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.39.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.5.2` | `2.12.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.1.0` | `2.11.0` |\n| [python-jose[cryptography]](https://github.com/mpdavis/python-jose) | `3.3.0` | `3.5.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.6` | `0.0.20` |\n| [openpyxl](https://openpyxl.readthedocs.io) | `3.1.2` | `3.1.5` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.9` | `2.9.11` |\n| [playwright](https://github.com/microsoft/playwright-python) | `1.40.0` | `1.57.0` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.12.0` | `3.15.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.7.5` | `1.8.6` |\n| [factory-boy](https://github.com/FactoryBoy/factory_boy) | `3.3.0` | `3.3.3` |\n| [httpx](https://github.com/encode/httpx) | `0.25.2` | `0.28.1` |\n| [selenium](https://github.com/SeleniumHQ/Selenium) | `4.16.0` | `4.36.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.20.0` | `4.25.1` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.19.0` | `0.24.1` |\n| [python-docx](https://github.com/python-openxml/python-docx) | `1.1.0` | `1.2.0` |\n| [pytesseract](https://github.com/madmaze/pytesseract) | `0.3.10` | `0.3.13` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.13.1` | `1.16.5` |\n| [cerberus](https://github.com/pyeve/cerberus) | `1.3.5` | `1.3.8` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.12.3` | `4.14.3` |\n| [celery[redis]](https://github.com/celery/celery) | `5.3.4` | `5.6.2` |\n| [kombu](https://github.com/celery/kombu) | `5.3.4` | `5.6.2` |\n| [billiard](https://github.com/celery/billiard) | `4.2.0` | `4.2.4` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.23` | `2.0.46` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.29.0` | `0.31.0` |\n| [orjson](https://github.com/ijl/orjson) | `3.9.10` | `3.11.5` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.0.7` | `1.1.2` |\n| [dynaconf](https://github.com/dynaconf/dynaconf) | `3.2.4` | `3.2.12` |\n| [nltk](https://github.com/nltk/nltk) | `3.8.1` | `3.9.2` |\n| [lru-dict](https://github.com/amitdev/lru-dict) | `1.3.0` | `1.4.1` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.8.0` | `2.10.1` |\n| [jupyter](https://jupyter.org) | `1.0.0` | `1.1.1` |\n| [supervisor](https://github.com/Supervisor/supervisor) | `4.2.5` | `4.3.0` |\n| [setproctitle](https://github.com/dvarrazzo/py-setproctitle) | `1.3.3` | `1.3.7` |\n| [lz4](https://github.com/python-lz4/python-lz4) | `4.3.2` | `4.4.5` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.22.0` | `0.25.0` |\n| [transitions](https://github.com/pytransitions/transitions) | `0.9.0` | `0.9.3` |\n| [python-dateutil](https://github.com/dateutil/dateutil) | `2.8.2` | `2.9.0.post0` |\n| [uvloop](https://github.com/MagicStack/uvloop) | `0.19.0` | `0.22.1` |\n| [ujson](https://github.com/ultrajson/ultrajson) | `5.8.0` | `5.11.0` |\n| [py-spy](https://github.com/benfred/py-spy) | `0.3.14` | `0.4.1` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.16.3` | `1.20.1` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.32.5` |\n| [scrapy](https://github.com/scrapy/scrapy) | `2.11.0` | `2.13.4` |\n| [tweepy](https://github.com/tweepy/tweepy) | `4.14.0` | `4.16.0` |\n| [praw](https://github.com/praw-dev/praw) | `7.7.1` | `7.8.1` |\n| [feedparser](https://github.com/kurtmckee/feedparser) | `6.0.10` | `6.0.12` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.15.1` | `0.22.2` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.6.4` | `1.9.0` |\n| [asyncio-mqtt](https://github.com/sbtinstruments/asyncio-mqtt) | `0.13.0` | `0.16.2` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.4.0` | `7.10.7` |\n\n\nUpdates `streamlit` from 1.28.0 to 1.50.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/streamlit/streamlit/releases\"\u003estreamlit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.50.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes 🛠\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: deprecate kwargs in st.plotly_chart and add config dict instead by \u003ca href=\"https://github.com/zyfy29\"\u003e\u003ccode\u003e@​zyfy29\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12291\"\u003estreamlit/streamlit#12291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.checkbox\u003c/code\u003e \u0026amp; \u003ccode\u003est.toggle\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12372\"\u003estreamlit/streamlit#12372\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003e**kwargs\u003c/code\u003e support from \u003ccode\u003est.write\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12375\"\u003estreamlit/streamlit#12375\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.number_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12437\"\u003estreamlit/streamlit#12437\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.text_area\u003c/code\u003e \u0026amp; \u003ccode\u003est.text_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12397\"\u003estreamlit/streamlit#12397\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eMultiselectColumn\u003c/code\u003e for \u003ccode\u003est.dataframe\u003c/code\u003e and \u003ccode\u003est.data_editor\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/9223\"\u003estreamlit/streamlit#9223\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for source directly in theming font configs by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12239\"\u003estreamlit/streamlit#12239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[feat] Add \u003ccode\u003edefault\u003c/code\u003e param to \u003ccode\u003est.tabs\u003c/code\u003e by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12313\"\u003estreamlit/streamlit#12313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eborder\u003c/code\u003e parameter to \u003ccode\u003est.table\u003c/code\u003e by \u003ca href=\"https://github.com/jrieke\"\u003e\u003ccode\u003e@​jrieke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/11796\"\u003estreamlit/streamlit#11796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[feat] Hover, active, focus-visible states for CopyButton by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12348\"\u003estreamlit/streamlit#12348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[AdvancedLayouts] Adds a width parameters to \u003ccode\u003est.line_chart\u003c/code\u003e. by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/11923\"\u003estreamlit/streamlit#11923\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd main theme color config options by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12288\"\u003estreamlit/streamlit#12288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for button widgets by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12332\"\u003estreamlit/streamlit#12332\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esort\u003c/code\u003e parameter to \u003ccode\u003est.bar_chart\u003c/code\u003e by \u003ca href=\"https://github.com/jrieke\"\u003e\u003ccode\u003e@​jrieke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12339\"\u003estreamlit/streamlit#12339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd theme background color config options by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12405\"\u003estreamlit/streamlit#12405\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd theme text color config options by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12438\"\u003estreamlit/streamlit#12438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.time_input\u003c/code\u003e \u0026amp; \u003ccode\u003est.date_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12464\"\u003estreamlit/streamlit#12464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[feat] Add sample rate parameter to \u003ccode\u003est.audio_input\u003c/code\u003e component by \u003ca href=\"https://github.com/sfc-gh-nbellante\"\u003e\u003ccode\u003e@​sfc-gh-nbellante\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12272\"\u003estreamlit/streamlit#12272\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMetric supports numerics like decimal. by \u003ca href=\"https://github.com/aebrahim\"\u003e\u003ccode\u003e@​aebrahim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12377\"\u003estreamlit/streamlit#12377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow slider tick labels on hover by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12367\"\u003estreamlit/streamlit#12367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[AdvancedLayouts] Add height param to \u003ccode\u003est.graphviz_chart\u003c/code\u003e by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12297\"\u003estreamlit/streamlit#12297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.selectbox\u003c/code\u003e \u0026amp; \u003ccode\u003est.multiselect\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12493\"\u003estreamlit/streamlit#12493\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport configuring the chart column colors by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12292\"\u003estreamlit/streamlit#12292\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix code usage in markdown labels by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12175\"\u003estreamlit/streamlit#12175\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Fullscreen behaviour for \u003ccode\u003est.image\u003c/code\u003e with use_container_width=True or width=\u0026quot;stretch\u0026quot; by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12235\"\u003estreamlit/streamlit#12235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] DateInput: normalize selected dates to start-of-day to honor max by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12295\"\u003estreamlit/streamlit#12295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure markdown images keep the aspect ratio by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12343\"\u003estreamlit/streamlit#12343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue with typing formatted values into \u003ccode\u003est.number_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12351\"\u003estreamlit/streamlit#12351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] \u003ccode\u003ehtml\u003c/code\u003e with float height.  by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12354\"\u003estreamlit/streamlit#12354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Share more code between Selectbox and Multiselect to align behavior by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12330\"\u003estreamlit/streamlit#12330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix logo pushing out collapse button by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12329\"\u003estreamlit/streamlit#12329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix long-words overflowing markdown container by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12370\"\u003estreamlit/streamlit#12370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MIME type for \u003ccode\u003e.mjs\u003c/code\u003e by \u003ca href=\"https://github.com/geoextra\"\u003e\u003ccode\u003e@​geoextra\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12399\"\u003estreamlit/streamlit#12399\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Pandas styler performance regression by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12422\"\u003estreamlit/streamlit#12422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Allow empty section pages in top navigation similar to how we do it for sidebar nav  by \u003ca href=\"https://github.com/nico-bellante\"\u003e\u003ccode\u003e@​nico-bellante\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12247\"\u003estreamlit/streamlit#12247\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] horizontal alignment of st.image in vertical containers by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12495\"\u003estreamlit/streamlit#12495\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Setting 0 for height/width on components.html and components.iframe .  by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12479\"\u003estreamlit/streamlit#12479\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix duckdb integration test by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12537\"\u003estreamlit/streamlit#12537\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert number input component refactoring by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12547\"\u003estreamlit/streamlit#12547\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd default main colors to theme by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12334\"\u003estreamlit/streamlit#12334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelease/1.49.0 by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12328\"\u003estreamlit/streamlit#12328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelease/1.49.1 by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12376\"\u003estreamlit/streamlit#12376\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/streamlit/streamlit/commit/52736534b6488da3bcb0c9d8bba855855a963678\"\u003e\u003ccode\u003e5273653\u003c/code\u003e\u003c/a\u003e Docstrings for 1.50.0 (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12605\"\u003e#12605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/f831f19024003fb0c0b3195c6150825deb7520fc\"\u003e\u003ccode\u003ef831f19\u003c/code\u003e\u003c/a\u003e Up version to 1.50.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/0ba383ec56e18df5e0efa8d62b8f00626dcfc128\"\u003e\u003ccode\u003e0ba383e\u003c/code\u003e\u003c/a\u003e [feat] Add Patch Release Branch Creation workflow (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12509\"\u003e#12509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/5abda776f6ee13a32ef8e5c5477205a73db1d593\"\u003e\u003ccode\u003e5abda77\u003c/code\u003e\u003c/a\u003e Support configuring the chart column colors (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12292\"\u003e#12292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/9d0e6bdcd383a52a75a12224c84f5e71d886e4a6\"\u003e\u003ccode\u003e9d0e6bd\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.selectbox\u003c/code\u003e \u0026amp; \u003ccode\u003est.multiselect\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12493\"\u003e#12493\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/53b2c4f741c5f3914015c0868e2169449b0735f9\"\u003e\u003ccode\u003e53b2c4f\u003c/code\u003e\u003c/a\u003e Fix pytest warning filter error (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12558\"\u003e#12558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/8608e83d9aadb5f79f03d7f9e817f9b12f24ad45\"\u003e\u003ccode\u003e8608e83\u003c/code\u003e\u003c/a\u003e Add support for new ruff rules (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12538\"\u003e#12538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/dec9d209fcdcfc2092ad5b7ab08ca79622936b5b\"\u003e\u003ccode\u003edec9d20\u003c/code\u003e\u003c/a\u003e Revert number input component refactoring (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12547\"\u003e#12547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/57fd06756fd59112c4247dbdb383ecf3affb2839\"\u003e\u003ccode\u003e57fd067\u003c/code\u003e\u003c/a\u003e [feat] Add Cherry-Pick to Release Branch automation (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12516\"\u003e#12516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/c5aa15cb69d8efe754b0b182f273d262d0f33849\"\u003e\u003ccode\u003ec5aa15c\u003c/code\u003e\u003c/a\u003e Update mypy requirement from \u0026lt;1.18,\u0026gt;=1.16.1 to \u0026gt;=1.16.1,\u0026lt;1.19 in /lib (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12551\"\u003e#12551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/streamlit/streamlit/compare/1.28.0...1.50.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.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 `mypy` from 1.7.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.7.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 `scikit-learn` from 1.3.2 to 1.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scikit-learn/scikit-learn/releases\"\u003escikit-learn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eScikit-learn 1.6.1\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.6.1 release.\u003c/p\u003e\n\u003cp\u003eThis release contains fixes for a few regressions introduced in 1.6.\u003c/p\u003e\n\u003cp\u003eYou can see the changelog here: \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.6.html#version-1-6-1\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.6.html#version-1-6-1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThanks to everyone who contributed to this release !\u003c/p\u003e\n\u003ch2\u003eScikit-learn 1.6.0\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.6.0 release.\u003c/p\u003e\n\u003cp\u003eYou can read the release highlights under \u003ca href=\"https://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_6_0.html\"\u003ehttps://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_6_0.html\u003c/a\u003e and the long version of the change log under \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.6.html\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.6.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis version supports Python versions 3.9 to 3.13 and features an experimental support of free-threaded CPython.\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eScikit-learn 1.5.2\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.5.2 release.\u003c/p\u003e\n\u003cp\u003eThis release contains fixes for a few regressions introduced in 1.5.\u003c/p\u003e\n\u003cp\u003eYou can see the changelog here: \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.5.html#version-1-5-2\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.5.html#version-1-5-2\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/f159b78dc59f250cdde8fe391a21f0bc871960ad\"\u003e\u003ccode\u003ef159b78\u003c/code\u003e\u003c/a\u003e trigger wheel builder [cd build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/73cca70befaa3167903f1fbe15e81df587598f11\"\u003e\u003ccode\u003e73cca70\u003c/code\u003e\u003c/a\u003e generate changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/afaa07062bfd77c5ec15cfc62f0102c257092563\"\u003e\u003ccode\u003eafaa070\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/1f43fd2307c13593ea5ba194dcc5e7a814cfade9\"\u003e\u003ccode\u003e1f43fd2\u003c/code\u003e\u003c/a\u003e DOC: Updates to Macro vs micro-averaging in plot_roc.py (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/29845\"\u003e#29845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/ea8a7259f53c2cd78c1a8341bdab228e621dd2ba\"\u003e\u003ccode\u003eea8a725\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for main CI build(s) :lock: :robot: (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/30593\"\u003e#30593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/bc291f1030aa4f122187d5334a426ab1848a7ee6\"\u003e\u003ccode\u003ebc291f1\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for scipy-dev CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/f5f2b9c7b725a957caf8089d254f9176e8fabda9\"\u003e\u003ccode\u003ef5f2b9c\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for free-threaded CI build(s) :lock: :rob...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/acbb8621c816f12f0648f175edf8acb561768ec5\"\u003e\u003ccode\u003eacbb862\u003c/code\u003e\u003c/a\u003e TST Fix doctest due to GradientBoostingClassifier difference with scipy 1.15 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/42831e522f9f08f34e01cd85d60aa852914b135d\"\u003e\u003ccode\u003e42831e5\u003c/code\u003e\u003c/a\u003e FIX warn if an estimator does have a concrete \u003cstrong\u003esklearn_tags\u003c/strong\u003e implementation...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/0d2ce432de05b1f0c3b055572c08bee332c37724\"\u003e\u003ccode\u003e0d2ce43\u003c/code\u003e\u003c/a\u003e FIX change FutureWarnings to DeprecationWarnings for the tags (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/30573\"\u003e#30573\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scikit-learn/scikit-learn/compare/1.3.2...1.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `statsmodels` from 0.14.1 to 0.14.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/statsmodels/statsmodels/releases\"\u003estatsmodels's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 0.14.6\u003c/h2\u003e\n\u003cp\u003eThis patch release fixes an issue with pandas 3.0.0 that prevented statsmodels from importing. It also addresses some minor changes that improve future compatibility in NumPy.\u003c/p\u003e\n\u003ch2\u003eRelease 0.14.5\u003c/h2\u003e\n\u003cp\u003eThis patch release fixes an issue with recent SciPy releases (1.16+) that prevented statsmodels from importing. It also addresses some small changes that improve future compatibility.\u003c/p\u003e\n\u003ch2\u003eRelease 0.14.4\u003c/h2\u003e\n\u003cp\u003eThe statsmodels developers are pleased to announce the release of 0.14.4. This release contains one feature and no fixes.\u003c/p\u003e\n\u003cp\u003eNew Feature:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePyodide support\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 0.14.3\u003c/h2\u003e\n\u003cp\u003eThis is a packaging and compatibility release that will allow statsmodels to run in environments using NumPy 2 and recent pandas.\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eCorrects the build procedure for MacOS on both x86_64 and arm64\u003c/li\u003e\n\u003cli\u003eImproves compatibility with recent pandas releases\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2\u003eRelease 0.14.2\u003c/h2\u003e\n\u003cp\u003eThis is a compatibility release that will allow statsmodels to run in environments using NumPy 2.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFull compatibility with NumPy 2\u003c/li\u003e\n\u003cli\u003eImproved future proofing against pandas 3 changes\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statsmodels/statsmodels/commit/40e6a84d26ac74623c6b94b718f0987ef0351c53\"\u003e\u003ccode\u003e40e6a84\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/statsmodels/statsmodels/issues/9701\"\u003e#9701\u003c/a\u003e from bashtage/doc-0.14.6-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statsmodels/statsmodels/commit/120ad27d72f85b6f772f97e2f2ac5112b3b004b1\"\u003e\u003ccode\u003e120ad27\u003c/code\u003e\u003c/a\u003e DOC: Release note for 0.14.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statsmodels/statsmodels/commit/e8b0ab012bbc108f528de0abd88f01787e28a483\"\u003e\u003ccode\u003ee8b0ab0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/statsmodels/statsmodels/issues/9700\"\u003e#9700\u003c/a\u003e from bashtage/final-0.14.6-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statsmodels/statsmodels/commit/8ad398a2cc997104d59eb0bf3447f4fabf2e4466\"\u003e\u003ccode\u003e8ad398a\u003c/code\u003e\u003c/a\u003e MAINT: Improve compatability wiht recent NumPy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statsmodels/statsmodels/commit/9495808cfc47f3c80cfeae63ebe72d1541688c65\"\u003e\u003ccode\u003e9495808\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/statsmodels/statsmodels/issues/9633\"\u003e#9633\u003c/a\u003e from bashtage/changes-0-14-6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statsmodels/statsmodels/commit/b44854afd635ef35c38c94ecae9c08d7e790c4cc\"\u003e\u003ccode\u003eb44854a\u003c/code\u003e\u003c/a\u003e STY: Fix linting fails\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statsmodels/statsmodels/commit/e7b2fa569b056e098e3df9134042fe3146034306\"\u003e\u003ccode\u003ee7b2fa5\u003c/code\u003e\u003c/a\u003e MAINT: Update for recent changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statsmodels/statsmodels/commit/1107ea567121b80f90562d6c72085eed7e882113\"\u003e\u003ccode\u003e1107ea5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/statsmodels/statsmodels/issues/9591\"\u003e#9591\u003c/a\u003e from bashtage/rls-0-14-5-notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statsmodels/statsmodels/commit/f3b362a3c8211d062eef65fe11fa33e8e2ea3107\"\u003e\u003ccode\u003ef3b362a\u003c/code\u003e\u003c/a\u003e MAINT: Update CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statsmodels/statsmodels/commit/e2249abfb32ea92a6acc75323ccbdeab6a1fbe93\"\u003e\u003ccode\u003ee2249ab\u003c/code\u003e\u003c/a\u003e DOC: Final fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/statsmodels/statsmodels/compare/v0.14.1...v0.14.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.8.2 to 3.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: 3.9.4\u003c/h2\u003e\n\u003cp\u003eThis is the fourth bugfix release of the 3.9.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains two bug-fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix toolbar icons in GTK backend\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ePoly3DCollection\u003c/code\u003e initialization with list of lists\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eREL: 3.9.3\u003c/h2\u003e\n\u003cp\u003eThis is the third bugfix release of the 3.9.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains several bug-fixes and adjustments:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eaxline\u003c/code\u003e with extremely small slopes\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eaxline\u003c/code\u003e with non-linear axis scales\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eminimumSizeHint\u003c/code\u003e with Qt backend\u003c/li\u003e\n\u003cli\u003eFix config directory usage when it's behind a symlink\u003c/li\u003e\n\u003cli\u003eFix draggable legend when blitting is enabled\u003c/li\u003e\n\u003cli\u003eFix high CPU utilization in the \u003ccode\u003emacosx\u003c/code\u003e backend\u003c/li\u003e\n\u003cli\u003eFix multiple hatch \u003ccode\u003eedgecolors\u003c/code\u003e passed to \u003ccode\u003econtourf\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove compatibility with \u003ccode\u003epytest\u003c/code\u003e 8.2.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eREL: 3.9.2\u003c/h2\u003e\n\u003cp\u003eThis is the second bugfix release of the 3.9.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains several bug-fixes and adjustments:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBe more resilient to I/O failures when writing font cache\u003c/li\u003e\n\u003cli\u003eFix nondeterministic behavior with subplot spacing and constrained layout\u003c/li\u003e\n\u003cli\u003eFix sticky edge tolerance relative to data range\u003c/li\u003e\n\u003cli\u003eImprove formatting of image values in cases of singular norms\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWindows wheels now bundle the MSVC runtime DLL statically to avoid inconsistencies with other wheels and random crashes depending on import order.\u003c/p\u003e\n\u003ch2\u003eREL: 3.9.1\u003c/h2\u003e\n\u003cp\u003eThis is the first bugfix release of the 3.9.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains several bug-fixes and adjustments:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd GitHub artifact attestations for sdist and wheels\u003c/li\u003e\n\u003cli\u003eRe-add \u003ccode\u003ematplotlib.cm.get_cmap\u003c/code\u003e; note this function will still be removed at a later date\u003c/li\u003e\n\u003cli\u003eAllow duplicate backend entry points\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAxes\u003c/code\u003e autoscaling of thin bars at large locations\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAxes\u003c/code\u003e autoscaling with \u003ccode\u003eaxhspan\u003c/code\u003e / \u003ccode\u003eaxvspan\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAxes3D\u003c/code\u003e autoscaling of \u003ccode\u003eLine3DCollection\u003c/code\u003e / \u003ccode\u003ePoly3DCollection\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAxes3D\u003c/code\u003e mouse interactivity with non-default roll angle\u003c/li\u003e\n\u003cli\u003eFix box aspect ratios in \u003ccode\u003eAxes3D\u003c/code\u003e with alternate vertical axis\u003c/li\u003e\n\u003cli\u003eFix case handling of backends specified as \u003ccode\u003emodule://...\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix crash with TkAgg on Windows with \u003ccode\u003etk.window_focus: True\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix interactive update of SubFigures\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/69a98115f8bdaf0f3f615b062d3a380f01f017df\"\u003e\u003ccode\u003e69a9811\u003c/code\u003e\u003c/a\u003e REL: 3.9.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/beb28e9ae646896f772a46468c76a26007d87cf5\"\u003e\u003ccode\u003ebeb28e9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/29297\"\u003e#29297\u003c/a\u003e from QuLogic/auto-backport-of-pr-29295-on-v3.9.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/9d3cc1ec1c68943932059a15ff199bdd6d458fc0\"\u003e\u003ccode\u003e9d3cc1e\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/29295\"\u003e#29295\u003c/a\u003e: BLD: Pin meson-python to \u0026lt;0.17.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/57f7fdf74703eaeec77acdadc7ec655321f602f0\"\u003e\u003ccode\u003e57f7fdf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/29175\"\u003e#29175\u003c/a\u003e from vicliu2001/v3.9.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/3982428df4fed6cb0a6c6ee433e6b8a0d2933e7c\"\u003e\u003ccode\u003e3982428\u003c/code\u003e\u003c/a\u003e changed plot.show to plot.draw\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/6348165c649e8efb410582025534f73997661666\"\u003e\u003ccode\u003e6348165\u003c/code\u003e\u003c/a\u003e modified test for _generate_normals\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/1d7e71eafa2e9f22f605b0cd767165e38fb10a25\"\u003e\u003ccode\u003e1d7e71e\u003c/code\u003e\u003c/a\u003e DOC: Add Zenodo DOI for 3.9.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/4d1e3d247c3e6986f18623abfb7e9d4b6e4f46b2\"\u003e\u003ccode\u003e4d1e3d2\u003c/code\u003e\u003c/a\u003e BLD: bump branch away from tag\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/3ac0aea8be540028cb2510dabb43b290d15b503d\"\u003e\u003ccode\u003e3ac0aea\u003c/code\u003e\u003c/a\u003e REL: 3.9.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/3f7adbd87e281f211779870c38d6bb5da84edc46\"\u003e\u003ccode\u003e3f7adbd\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.9.2-doc' into v3.9.x\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.8.2...v3.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `seaborn` from 0.13.0 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/mwaskom/seaborn/releases\"\u003eseaborn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.13.2 (January 2024)\u003c/h2\u003e\n\u003cp\u003eThis is a minor release containing internal changes that adapt to upcoming deprecations in pandas. All users are encouraged to update.\u003c/p\u003e\n\u003ch2\u003ev0.13.1 (December 2023)\u003c/h2\u003e\n\u003cp\u003eThis is a minor release with some bug fixes and a couple new features. All users are encouraged to update.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e|Feature| Added support for weighted mean estimation (with boostrap CIs) in \u003ccode\u003elineplot\u003c/code\u003e, \u003ccode\u003ebarplot\u003c/code\u003e, \u003ccode\u003epointplot\u003c/code\u003e, and \u003ccode\u003eobjects.Est\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3580\"\u003e#3580\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3586\"\u003e#3586\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e|Feature| Added the \u003ccode\u003eextent\u003c/code\u003e option in \u003ccode\u003eobjects.Plot.layout\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3552\"\u003e#3552\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e|Fix| Fixed a regression in v0.13.0 that triggered an exception when working with non-numpy data types (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3516\"\u003e#3516\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e|Fix| Fixed a bug in \u003ccode\u003eobjects.Plot\u003c/code\u003e so that tick labels are shown for wrapped axes that aren't in the bottom-most row (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3600\"\u003e#3600\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e|Fix| Fixed a bug in \u003ccode\u003ecatplot\u003c/code\u003e where a blank legend would be added when \u003ccode\u003ehue\u003c/code\u003e was redundantly assigned (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3540\"\u003e#3540\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e|Fix| Fixed a bug in \u003ccode\u003ecatplot\u003c/code\u003e where the \u003ccode\u003eedgecolor\u003c/code\u003e parameter was ignored with \u003ccode\u003ekind=\u0026quot;bar\u0026quot;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3547\"\u003e#3547\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e|Fix| Fixed a bug in \u003ccode\u003eboxplot\u003c/code\u003e where an exception was raised when using the matplotlib \u003ccode\u003ebootstrap\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3562\"\u003e#3562\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e|Fix| Fixed a bug in \u003ccode\u003elineplot\u003c/code\u003e where an exception was raised when \u003ccode\u003ehue\u003c/code\u003e was assigned with an empty dataframe (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3569\"\u003e#3569\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e|Fix| Fixed a bug in multiple categorical plots that raised with \u003ccode\u003ehue=None\u003c/code\u003e and \u003ccode\u003edodge=True\u003c/code\u003e; this is now has no effect (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3605\"\u003e#3605\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mwaskom/seaborn/commit/9521ea1f29b5ce1df1aa2ed6f65f3bd1c63884bb\"\u003e\u003ccode\u003e9521ea1\u003c/code\u003e\u003c/a\u003e Bump version for v0.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mwaskom/seaborn/commit/7910f1335e1cefae0c29dcb1d6b0e6592737c837\"\u003e\u003ccode\u003e7910f13\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into v0.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mwaskom/seaborn/commit/b95d6d1ce9dfed6970015d8bdad9068b5749868a\"\u003e\u003ccode\u003eb95d6d1\u003c/code\u003e\u003c/a\u003e Tweak language\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mwaskom/seaborn/commit/877ca7c0d516bafa51118aceee01b8a7a251deb1\"\u003e\u003ccode\u003e877ca7c\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into v0.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mwaskom/seaborn/commit/5ef7c27aac9f96e97fa1aac0ba106bac7d3febf0\"\u003e\u003ccode\u003e5ef7c27\u003c/code\u003e\u003c/a\u003e Add v0.13.2 release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mwaskom/seaborn/commit/7aed2a044ce2754a53729251184d65b723ada892\"\u003e\u003ccode\u003e7aed2a0\u003c/code\u003e\u003c/a\u003e Adapt to deprecations in pandas 2.2.0 (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3620\"\u003e#3620\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mwaskom/seaborn/commit/a3cb0f1b33551eb25fed1907d0abdd0237fac215\"\u003e\u003ccode\u003ea3cb0f1\u003c/code\u003e\u003c/a\u003e microscopic typofix: \u0026quot;swaarms\u0026quot; (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3611\"\u003e#3611\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mwaskom/seaborn/commit/d00a27df750130e28e4801caaedc782433863a37\"\u003e\u003ccode\u003ed00a27d\u003c/code\u003e\u003c/a\u003e Merge master and update version for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mwaskom/seaborn/commit/6890b315d00b74f372bc91f3929c803837b2ddf1\"\u003e\u003ccode\u003e6890b31\u003c/code\u003e\u003c/a\u003e Finalize v0.13.1 release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mwaskom/seaborn/commit/1771d8e2c903847d4274963638fbae32c52bd2d8\"\u003e\u003ccode\u003e1771d8e\u003c/code\u003e\u003c/a\u003e Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mwaskom/seaborn/compare/v0.13.0...v0.13.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery` from 5.3.4 to 5.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/releases\"\u003ecelery's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.6.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix recursive WorkController instantiation in DjangoWorkerFixup + AttributeError when pool_cls is a string by \u003ca href=\"https://github.com/bruunotrindade\"\u003e\u003ccode\u003e@​bruunotrindade\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10045\"\u003ecelery/celery#10045\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBugfix: Revoked tasks now immediately update backend status to REVOKED by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9869\"\u003ecelery/celery#9869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.2 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10049\"\u003ecelery/celery#10049\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/bruunotrindade\"\u003e\u003ccode\u003e@​bruunotrindade\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10045\"\u003ecelery/celery#10045\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/celery/compare/v5.6.1...v5.6.2\"\u003ehttps://github.com/celery/celery/compare/v5.6.1...v5.6.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.6.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Redis Sentinel ACL authentication support by \u003ca href=\"https://github.com/anthonykuzmich7\"\u003e\u003ccode\u003e@​anthonykuzmich7\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10013\"\u003ecelery/celery#10013\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Broker heartbeats not sent during graceful shutdown by \u003ca href=\"https://github.com/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9986\"\u003ecelery/celery#9986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs \u003ca href=\"https://redirect.github.com/celery/celery/issues/5410\"\u003e#5410\u003c/a\u003e -- Document confirm_publish broker transport option by \u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10016\"\u003ecelery/celery#10016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eclose DB pools only in prefork mode by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10020\"\u003ecelery/celery#10020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Avoid unnecessary Django database connection creation during cleanup by \u003ca href=\"https://github.com/snopoke\"\u003e\u003ccode\u003e@​snopoke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10015\"\u003ecelery/celery#10015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ereliable prefork detection by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10023\"\u003ecelery/celery#10023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebetter coverage by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10029\"\u003ecelery/celery#10029\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: clarify \u003ccode\u003eresult_extended\u003c/code\u003e vs periodic task metadata and show \u003ccode\u003eheaders[\u0026quot;periodic_task_name\u0026quot;]\u003c/code\u003e example by \u003ca href=\"https://github.com/SpaceShaman\"\u003e\u003ccode\u003e@​SpaceShaman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10030\"\u003ecelery/celery#10030\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop importing pytest_subtests by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10032\"\u003ecelery/celery#10032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly use exceptiongroup backport for Python \u0026lt; 3.11 by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10033\"\u003ecelery/celery#10033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.1 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10037\"\u003ecelery/celery#10037\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/anthonykuzmich7\"\u003e\u003ccode\u003e@​anthonykuzmich7\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10013\"\u003ecelery/celery#10013\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9986\"\u003ecelery/celery#9986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10016\"\u003ecelery/celery#10016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snopoke\"\u003e\u003ccode\u003e@​snopoke\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10015\"\u003ecelery/celery#10015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SpaceShaman\"\u003e\u003ccode\u003e@​SpaceShaman\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10030\"\u003ecelery/celery#10030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/celery/compare/v5.6.0...v5.6.1\"\u003ehttps://github.com/celery/celery/compare/v5.6.0...v5.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.6.0\u003c/h2\u003e\n\u003cp\u003eCelery v5.6.0 is now available.\u003c/p\u003e\n\u003ch2\u003eKey Highlights\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://docs.celeryq.dev/en/stable/history/whatsnew-5.6.html\"\u003eWhat's new in Celery 5.6\u003c/a\u003e for a complete overview or read the main highlights below.\u003c/p\u003e\n\u003ch3\u003ePython 3.9 Minimum Version\u003c/h3\u003e\n\u003cp\u003eCelery 5.6.0 drops support for Python 3.8 (EOL). The minimum required Python version is now 3.9. Users still on Python 3.8 must upgrade their Python version before upgrading to Celery 5.6.0.\u003c/p\u003e\n\u003cp\u003eAdditionally, this release includes initial support for Python 3.14.\u003c/p\u003e\n\u003ch3\u003eSQS: Reverted to \u003ccode\u003epycurl\u003c/code\u003e from \u003ccode\u003eurllib3\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe switch from \u003ccode\u003epycurl\u003c/code\u003e to \u003ccode\u003eurllib3\u003c/code\u003e for the SQS transport (introduced in Celery 5.5.0 via Kombu) has been reverted due to critical issues affecting SQS users.\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/celery/celery/blob/main/Changelog.rst\"\u003ecelery's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.6.2\u003c/h1\u003e\n\u003cp\u003e:release-date: 2026-01-04\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Fix recursive WorkController instantiation in DjangoWorkerFixup + AttributeError when pool_cls is a string ([#10045](https://github.com/celery/celery/issues/10045))\n- Bugfix: Revoked tasks now immediately update backend status to REVOKED ([#9869](https://github.com/celery/celery/issues/9869))\n- Prepare for release: v5.6.2 ([#10049](https://github.com/celery/celery/issues/10049))\n\u003cp\u003e.. _version-5.6.1:\u003c/p\u003e\n\u003ch1\u003e5.6.1\u003c/h1\u003e\n\u003cp\u003e:release-date: 2025-12-29\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Redis Sentinel ACL authentication support (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10013\"\u003e#10013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: Broker heartbeats not sent during graceful shutdown (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9986\"\u003e#9986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs \u003ca href=\"https://redirect.github.com/celery/celery/issues/5410\"\u003e#5410\u003c/a\u003e -- Document confirm_publish broker transport option (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eclose DB pools only in prefork mode (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10020\"\u003e#10020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: Avoid unnecessary Django database connection creation during cleanup (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereliable prefork detection (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10023\"\u003e#10023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebetter coverage (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10029\"\u003e#10029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocs: clarify \u003ccode\u003eresult_extended\u003c/code\u003e vs periodic task metadata and show \u003ccode\u003eheaders[\u0026quot;periodic_task_name\u0026quot;]\u003c/code\u003e example (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10030\"\u003e#10030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStop importing pytest_subtests (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10032\"\u003e#10032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOnly use exceptiongroup backport for Python \u0026lt; 3.11 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10033\"\u003e#10033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.1 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10037\"\u003e#10037\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _version-5.6.0:\u003c/p\u003e\n\u003ch1\u003e5.6.0\u003c/h1\u003e\n\u003cp\u003e:release-date: 2025-11-30\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eCelery v5.6.0 is now available.\u003c/p\u003e\n\u003cp\u003eKey Highlights\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nSee :ref:`whatsnew-5.6` for a complete overview or read the main highlights below.\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/6a43c846f183ef0cbade24f4b9a8f7a6ea113b44\"\u003e\u003ccode\u003e6a43c84\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.2 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10049\"\u003e#10049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/333a82f746734151c5cbe848916085455b0a3748\"\u003e\u003ccode\u003e333a82f\u003c/code\u003e\u003c/a\u003e Bugfix: Revoked tasks now immediately update backend status to REVOKED (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9869\"\u003e#9869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/9d6ab110d947270c4edf0b42454266d2954e653d\"\u003e\u003ccode\u003e9d6ab11\u003c/code\u003e\u003c/a\u003e Fix recursive WorkController instantiation in DjangoWorkerFixup + AttributeEr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/21dbc73f81d2fae058de49e665afaa1cd92da5c0\"\u003e\u003ccode\u003e21dbc73\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.1 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10037\"\u003e#10037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/ba20bed7723c684d12ddd62d6a7c0c0d901b3351\"\u003e\u003ccode\u003eba20bed\u003c/code\u003e\u003c/a\u003e Only use exceptiongroup backport for Python \u0026lt; 3.11 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10033\"\u003e#10033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/21675299bc2d10c648448ec5221136e07c1eec1a\"\u003e\u003ccode\u003e2167529\u003c/code\u003e\u003c/a\u003e Stop importing pytest_subtests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/0527296acb1f1790788301d4395ba6d5ce2a9704\"\u003e\u003ccode\u003e0527296\u003c/code\u003e\u003c/a\u003e Bump google-cloud-firestore from 2.21.0 to 2.22.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/5f8659bdba4561796d66e938a1e2c71d4489562f\"\u003e\u003ccode\u003e5f8659b\u003c/code\u003e\u003c/a\u003e Clarify 'result_extended' setting usag...\n\n_Description has been truncated_","html_url":"https://github.com/ChunkyTortoise/EnterpriseHub/pull/23","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChunkyTortoise%2FEnterpriseHub/issues/23","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/23/packages"},{"uuid":"3831753892","node_id":"PR_kwDOQf0FPs6-HQCJ","number":22,"state":"open","title":"chore(deps): bump the python-minor-patch group across 1 directory with 37 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-20T02:21:25.000Z","updated_at":"2026-01-20T02:21:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor-patch","update_count":37,"packages":[{"name":"streamlit","old_version":"1.28.0","new_version":"1.50.0","repository_url":"https://github.com/streamlit/streamlit"},{"name":"pandas","old_version":"2.1.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"python-dotenv","old_version":"1.0.0","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"flake8","old_version":"7.0.0","new_version":"7.3.0","repository_url":"https://github.com/pycqa/flake8"},{"name":"mypy","old_version":"1.8.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"scikit-learn","old_version":"1.4.0","new_version":"1.6.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"matplotlib","old_version":"3.8.2","new_version":"3.9.4","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"celery","old_version":"5.3.4","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"scipy","old_version":"1.11.4","new_version":"1.13.1","repository_url":"https://github.com/scipy/scipy"},{"name":"anthropic","old_version":"0.18.1","new_version":"0.76.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"textblob","old_version":"0.17.1","new_version":"0.19.0","repository_url":"https://github.com/sloria/TextBlob"},{"name":"fastapi","old_version":"0.110.0","new_version":"0.128.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.27.1","new_version":"0.39.0"},{"name":"pydantic","old_version":"2.6.1","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.1.0","new_version":"2.11.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"httpx","old_version":"0.26.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"python-jose","old_version":"3.3.0","new_version":"3.5.0"},{"name":"python-multipart","old_version":"0.0.6","new_version":"0.0.20","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"openpyxl","old_version":"3.1.2","new_version":"3.1.5"},{"name":"playwright","old_version":"1.40.0","new_version":"1.57.0","repository_url":"https://github.com/microsoft/playwright-python"},{"name":"selenium","old_version":"4.16.0","new_version":"4.36.0","repository_url":"https://github.com/SeleniumHQ/Selenium"},{"name":"onnxruntime","old_version":"1.16.3","new_version":"1.20.1","repository_url":"https://github.com/microsoft/onnxruntime"},{"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.3","new_version":"4.14.3"},{"name":"scrapy","old_version":"2.11.0","new_version":"2.13.4","repository_url":"https://github.com/scrapy/scrapy"},{"name":"tweepy","old_version":"4.14.0","new_version":"4.16.0","repository_url":"https://github.com/tweepy/tweepy"},{"name":"praw","old_version":"7.7.1","new_version":"7.8.1","repository_url":"https://github.com/praw-dev/praw"},{"name":"feedparser","old_version":"6.0.10","new_version":"6.0.12","repository_url":"https://github.com/kurtmckee/feedparser"},{"name":"tokenizers","old_version":"0.15.1","new_version":"0.22.2","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"spacy","old_version":"3.7.2","new_version":"3.8.11","repository_url":"https://github.com/explosion/spaCy"},{"name":"websocket-client","old_version":"1.6.4","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"asyncio-mqtt","old_version":"0.13.0","new_version":"0.16.2","repository_url":"https://github.com/sbtinstruments/asyncio-mqtt"},{"name":"kombu","old_version":"5.3.4","new_version":"5.6.2","repository_url":"https://github.com/celery/kombu"},{"name":"sqlalchemy","old_version":"2.0.25","new_version":"2.0.45","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"asyncpg","old_version":"0.29.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"alembic","old_version":"1.13.1","new_version":"1.16.5","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"coverage","old_version":"7.4.0","new_version":"7.10.7","repository_url":"https://github.com/coveragepy/coveragepy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 37 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.28.0` | `1.50.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.1.3` | `2.3.3` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.0` | `1.2.1` |\n| [flake8](https://github.com/pycqa/flake8) | `7.0.0` | `7.3.0` |\n| [mypy](https://github.com/python/mypy) | `1.8.0` | `1.19.1` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.4.0` | `1.6.1` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.8.2` | `3.9.4` |\n| [celery](https://github.com/celery/celery) | `5.3.4` | `5.6.2` |\n| [scipy](https://github.com/scipy/scipy) | `1.11.4` | `1.13.1` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `0.18.1` | `0.76.0` |\n| [textblob](https://github.com/sloria/TextBlob) | `0.17.1` | `0.19.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.110.0` | `0.128.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.27.1` | `0.39.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.6.1` | `2.12.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.1.0` | `2.11.0` |\n| [httpx](https://github.com/encode/httpx) | `0.26.0` | `0.28.1` |\n| [python-jose[cryptography]](https://github.com/mpdavis/python-jose) | `3.3.0` | `3.5.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.6` | `0.0.20` |\n| [openpyxl](https://openpyxl.readthedocs.io) | `3.1.2` | `3.1.5` |\n| [playwright](https://github.com/microsoft/playwright-python) | `1.40.0` | `1.57.0` |\n| [selenium](https://github.com/SeleniumHQ/Selenium) | `4.16.0` | `4.36.0` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.16.3` | `1.20.1` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.32.5` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.12.3` | `4.14.3` |\n| [scrapy](https://github.com/scrapy/scrapy) | `2.11.0` | `2.13.4` |\n| [tweepy](https://github.com/tweepy/tweepy) | `4.14.0` | `4.16.0` |\n| [praw](https://github.com/praw-dev/praw) | `7.7.1` | `7.8.1` |\n| [feedparser](https://github.com/kurtmckee/feedparser) | `6.0.10` | `6.0.12` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.15.1` | `0.22.2` |\n| [spacy](https://github.com/explosion/spaCy) | `3.7.2` | `3.8.11` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.6.4` | `1.9.0` |\n| [asyncio-mqtt](https://github.com/sbtinstruments/asyncio-mqtt) | `0.13.0` | `0.16.2` |\n| [kombu](https://github.com/celery/kombu) | `5.3.4` | `5.6.2` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.25` | `2.0.45` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.29.0` | `0.31.0` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.13.1` | `1.16.5` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.4.0` | `7.10.7` |\n\n\nUpdates `streamlit` from 1.28.0 to 1.50.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/streamlit/streamlit/releases\"\u003estreamlit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.50.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes 🛠\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: deprecate kwargs in st.plotly_chart and add config dict instead by \u003ca href=\"https://github.com/zyfy29\"\u003e\u003ccode\u003e@​zyfy29\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12291\"\u003estreamlit/streamlit#12291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.checkbox\u003c/code\u003e \u0026amp; \u003ccode\u003est.toggle\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12372\"\u003estreamlit/streamlit#12372\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003e**kwargs\u003c/code\u003e support from \u003ccode\u003est.write\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12375\"\u003estreamlit/streamlit#12375\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.number_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12437\"\u003estreamlit/streamlit#12437\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.text_area\u003c/code\u003e \u0026amp; \u003ccode\u003est.text_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12397\"\u003estreamlit/streamlit#12397\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eMultiselectColumn\u003c/code\u003e for \u003ccode\u003est.dataframe\u003c/code\u003e and \u003ccode\u003est.data_editor\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/9223\"\u003estreamlit/streamlit#9223\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for source directly in theming font configs by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12239\"\u003estreamlit/streamlit#12239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[feat] Add \u003ccode\u003edefault\u003c/code\u003e param to \u003ccode\u003est.tabs\u003c/code\u003e by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12313\"\u003estreamlit/streamlit#12313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eborder\u003c/code\u003e parameter to \u003ccode\u003est.table\u003c/code\u003e by \u003ca href=\"https://github.com/jrieke\"\u003e\u003ccode\u003e@​jrieke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/11796\"\u003estreamlit/streamlit#11796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[feat] Hover, active, focus-visible states for CopyButton by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12348\"\u003estreamlit/streamlit#12348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[AdvancedLayouts] Adds a width parameters to \u003ccode\u003est.line_chart\u003c/code\u003e. by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/11923\"\u003estreamlit/streamlit#11923\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd main theme color config options by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12288\"\u003estreamlit/streamlit#12288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for button widgets by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12332\"\u003estreamlit/streamlit#12332\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esort\u003c/code\u003e parameter to \u003ccode\u003est.bar_chart\u003c/code\u003e by \u003ca href=\"https://github.com/jrieke\"\u003e\u003ccode\u003e@​jrieke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12339\"\u003estreamlit/streamlit#12339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd theme background color config options by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12405\"\u003estreamlit/streamlit#12405\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd theme text color config options by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12438\"\u003estreamlit/streamlit#12438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.time_input\u003c/code\u003e \u0026amp; \u003ccode\u003est.date_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12464\"\u003estreamlit/streamlit#12464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[feat] Add sample rate parameter to \u003ccode\u003est.audio_input\u003c/code\u003e component by \u003ca href=\"https://github.com/sfc-gh-nbellante\"\u003e\u003ccode\u003e@​sfc-gh-nbellante\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12272\"\u003estreamlit/streamlit#12272\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMetric supports numerics like decimal. by \u003ca href=\"https://github.com/aebrahim\"\u003e\u003ccode\u003e@​aebrahim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12377\"\u003estreamlit/streamlit#12377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow slider tick labels on hover by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12367\"\u003estreamlit/streamlit#12367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[AdvancedLayouts] Add height param to \u003ccode\u003est.graphviz_chart\u003c/code\u003e by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12297\"\u003estreamlit/streamlit#12297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.selectbox\u003c/code\u003e \u0026amp; \u003ccode\u003est.multiselect\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12493\"\u003estreamlit/streamlit#12493\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport configuring the chart column colors by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12292\"\u003estreamlit/streamlit#12292\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix code usage in markdown labels by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12175\"\u003estreamlit/streamlit#12175\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Fullscreen behaviour for \u003ccode\u003est.image\u003c/code\u003e with use_container_width=True or width=\u0026quot;stretch\u0026quot; by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12235\"\u003estreamlit/streamlit#12235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] DateInput: normalize selected dates to start-of-day to honor max by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12295\"\u003estreamlit/streamlit#12295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure markdown images keep the aspect ratio by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12343\"\u003estreamlit/streamlit#12343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue with typing formatted values into \u003ccode\u003est.number_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12351\"\u003estreamlit/streamlit#12351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] \u003ccode\u003ehtml\u003c/code\u003e with float height.  by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12354\"\u003estreamlit/streamlit#12354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Share more code between Selectbox and Multiselect to align behavior by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12330\"\u003estreamlit/streamlit#12330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix logo pushing out collapse button by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12329\"\u003estreamlit/streamlit#12329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix long-words overflowing markdown container by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12370\"\u003estreamlit/streamlit#12370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MIME type for \u003ccode\u003e.mjs\u003c/code\u003e by \u003ca href=\"https://github.com/geoextra\"\u003e\u003ccode\u003e@​geoextra\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12399\"\u003estreamlit/streamlit#12399\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Pandas styler performance regression by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12422\"\u003estreamlit/streamlit#12422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Allow empty section pages in top navigation similar to how we do it for sidebar nav  by \u003ca href=\"https://github.com/nico-bellante\"\u003e\u003ccode\u003e@​nico-bellante\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12247\"\u003estreamlit/streamlit#12247\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] horizontal alignment of st.image in vertical containers by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12495\"\u003estreamlit/streamlit#12495\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Setting 0 for height/width on components.html and components.iframe .  by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12479\"\u003estreamlit/streamlit#12479\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix duckdb integration test by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12537\"\u003estreamlit/streamlit#12537\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert number input component refactoring by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12547\"\u003estreamlit/streamlit#12547\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd default main colors to theme by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12334\"\u003estreamlit/streamlit#12334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelease/1.49.0 by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12328\"\u003estreamlit/streamlit#12328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelease/1.49.1 by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12376\"\u003estreamlit/streamlit#12376\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/streamlit/streamlit/commit/52736534b6488da3bcb0c9d8bba855855a963678\"\u003e\u003ccode\u003e5273653\u003c/code\u003e\u003c/a\u003e Docstrings for 1.50.0 (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12605\"\u003e#12605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/f831f19024003fb0c0b3195c6150825deb7520fc\"\u003e\u003ccode\u003ef831f19\u003c/code\u003e\u003c/a\u003e Up version to 1.50.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/0ba383ec56e18df5e0efa8d62b8f00626dcfc128\"\u003e\u003ccode\u003e0ba383e\u003c/code\u003e\u003c/a\u003e [feat] Add Patch Release Branch Creation workflow (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12509\"\u003e#12509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/5abda776f6ee13a32ef8e5c5477205a73db1d593\"\u003e\u003ccode\u003e5abda77\u003c/code\u003e\u003c/a\u003e Support configuring the chart column colors (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12292\"\u003e#12292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/9d0e6bdcd383a52a75a12224c84f5e71d886e4a6\"\u003e\u003ccode\u003e9d0e6bd\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.selectbox\u003c/code\u003e \u0026amp; \u003ccode\u003est.multiselect\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12493\"\u003e#12493\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/53b2c4f741c5f3914015c0868e2169449b0735f9\"\u003e\u003ccode\u003e53b2c4f\u003c/code\u003e\u003c/a\u003e Fix pytest warning filter error (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12558\"\u003e#12558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/8608e83d9aadb5f79f03d7f9e817f9b12f24ad45\"\u003e\u003ccode\u003e8608e83\u003c/code\u003e\u003c/a\u003e Add support for new ruff rules (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12538\"\u003e#12538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/dec9d209fcdcfc2092ad5b7ab08ca79622936b5b\"\u003e\u003ccode\u003edec9d20\u003c/code\u003e\u003c/a\u003e Revert number input component refactoring (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12547\"\u003e#12547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/57fd06756fd59112c4247dbdb383ecf3affb2839\"\u003e\u003ccode\u003e57fd067\u003c/code\u003e\u003c/a\u003e [feat] Add Cherry-Pick to Release Branch automation (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12516\"\u003e#12516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/c5aa15cb69d8efe754b0b182f273d262d0f33849\"\u003e\u003ccode\u003ec5aa15c\u003c/code\u003e\u003c/a\u003e Update mypy requirement from \u0026lt;1.18,\u0026gt;=1.16.1 to \u0026gt;=1.16.1,\u0026lt;1.19 in /lib (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12551\"\u003e#12551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/streamlit/streamlit/compare/1.28.0...1.50.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pandas` from 2.1.3 to 2.3.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pandas-dev/pandas/releases\"\u003epandas's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePandas 2.3.3\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.3.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3/whatsnew/v2.3.3.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.3 supports Python 3.9 and higher, and is the first release to support Python 3.14.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003ch2\u003ePandas 2.3.2\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.2.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3/whatsnew/v2.3.2.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.2 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003ch2\u003ePandas 2.3.1\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.1.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3.1/whatsnew/v2.3.1.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.1 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\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/pandas-dev/pandas/commit/9c8bc3e55188c8aff37207a74f1dd144980b8874\"\u003e\u003ccode\u003e9c8bc3e\u003c/code\u003e\u003c/a\u003e RLS: 2.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/6aa788a00bda9b0f004302076dad94df3edeafc7\"\u003e\u003ccode\u003e6aa788a\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DOC: prepare 2.3.3 whatsnew notes for release (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62499\"\u003e#62499\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62508\"\u003e#62508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/b64f0df403d11ac733d9f460f89a5e99c8044ed0\"\u003e\u003ccode\u003eb64f0df\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: avoid validation error for ufunc with string[python] ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/058eb2b0edfc408dae9966ef1f03372f2a3ff04c\"\u003e\u003ccode\u003e058eb2b\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: String[pyarrow] comparison with mixed object (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62424\"\u003e#62424\u003c/a\u003e) (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/2ca088daef6a9d9333fea8aedffc7e50d28dfdee\"\u003e\u003ccode\u003e2ca088d\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DEPR: remove the Period resampling deprecation (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62480\"\u003e#62480\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62\"\u003e#62\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/92bf98f623572ed053d48be5818c8503f1b61888\"\u003e\u003ccode\u003e92bf98f\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: fix .str.isdigit to honor unicode superscript for older...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/e57c7d6a2247316188fba0ba2a0db3c11028d75c\"\u003e\u003ccode\u003ee57c7d6\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62452\"\u003e#62452\u003c/a\u003e on branch 2.3.x (TST: Adjust tests for numexpr 2.13) (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62454\"\u003e#62454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/e0fe9a03c90e560c34a3bbbdd1735a8b64f7b281\"\u003e\u003ccode\u003ee0fe9a0\u003c/code\u003e\u003c/a\u003e Backport to 2.3.x: REGR: from_records not initializing subclasses properly (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/23a1085e641c8e3a5b500e319c5973e4160b9236\"\u003e\u003ccode\u003e23a1085\u003c/code\u003e\u003c/a\u003e BUG: improve future warning for boolean operations with missaligned indexes (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/61136969fb18b438b6660bd5d485d0236dbf4a71\"\u003e\u003ccode\u003e6113696\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62396\"\u003e#62396\u003c/a\u003e on branch 2.3.x (PKG/DOC: indicate Python 3.14 support in ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pandas-dev/pandas/compare/v2.1.3...v2.3.3\"\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 `flake8` from 7.0.0 to 7.3.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/c48217e1fc006c2dddd14df54e83b67da15de5cd\"\u003e\u003ccode\u003ec48217e\u003c/code\u003e\u003c/a\u003e Release 7.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f9e0f33281d5bb892cae2c674ac398439d99c732\"\u003e\u003ccode\u003ef9e0f33\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/1986\"\u003e#1986\u003c/a\u003e from PyCQA/document-f542\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/6bcdb628597fa2d03494965089ff87a492ffc1e9\"\u003e\u003ccode\u003e6bcdb62\u003c/code\u003e\u003c/a\u003e document F542\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/70a15b8890d5bdf8c449ebb1b5259bd0140cc16b\"\u003e\u003ccode\u003e70a15b8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/1985\"\u003e#1985\u003c/a\u003e from PyCQA/upgrade-deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/4941a3e32e54488698ecbc23993bfeb2a60c0fc5\"\u003e\u003ccode\u003e4941a3e\u003c/code\u003e\u003c/a\u003e upgrade pyflakes / pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/23e4005c5501999c29e1e3774de7ed18d1e4e22d\"\u003e\u003ccode\u003e23e4005\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/1983\"\u003e#1983\u003c/a\u003e from PyCQA/py314\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/019424b80d3d7d5d8a2a1638f5877080546e3f46\"\u003e\u003ccode\u003e019424b\u003c/code\u003e\u003c/a\u003e add support for t-strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/6b6f3d5fefecc994a06f425c18c3cddc9b71e4a4\"\u003e\u003ccode\u003e6b6f3d5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/1980\"\u003e#1980\u003c/a\u003e from PyCQA/asottile-patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/8dfa6695b4fb1e1401b357367a0a71037d29f6aa\"\u003e\u003ccode\u003e8dfa669\u003c/code\u003e\u003c/a\u003e add rtd sphinx config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/ce3411118382d9332feb2749c8f417d10bfa2584\"\u003e\u003ccode\u003ece34111\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/1976\"\u003e#1976\u003c/a\u003e from PyCQA/document-f824\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.0.0...7.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.8.0 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.8.0...v1.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scikit-learn` from 1.4.0 to 1.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scikit-learn/scikit-learn/releases\"\u003escikit-learn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eScikit-learn 1.6.1\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.6.1 release.\u003c/p\u003e\n\u003cp\u003eThis release contains fixes for a few regressions introduced in 1.6.\u003c/p\u003e\n\u003cp\u003eYou can see the changelog here: \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.6.html#version-1-6-1\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.6.html#version-1-6-1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThanks to everyone who contributed to this release !\u003c/p\u003e\n\u003ch2\u003eScikit-learn 1.6.0\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.6.0 release.\u003c/p\u003e\n\u003cp\u003eYou can read the release highlights under \u003ca href=\"https://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_6_0.html\"\u003ehttps://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_6_0.html\u003c/a\u003e and the long version of the change log under \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.6.html\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.6.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis version supports Python versions 3.9 to 3.13 and features an experimental support of free-threaded CPython.\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eScikit-learn 1.5.2\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.5.2 release.\u003c/p\u003e\n\u003cp\u003eThis release contains fixes for a few regressions introduced in 1.5.\u003c/p\u003e\n\u003cp\u003eYou can see the changelog here: \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.5.html#version-1-5-2\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.5.html#version-1-5-2\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/f159b78dc59f250cdde8fe391a21f0bc871960ad\"\u003e\u003ccode\u003ef159b78\u003c/code\u003e\u003c/a\u003e trigger wheel builder [cd build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/73cca70befaa3167903f1fbe15e81df587598f11\"\u003e\u003ccode\u003e73cca70\u003c/code\u003e\u003c/a\u003e generate changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/afaa07062bfd77c5ec15cfc62f0102c257092563\"\u003e\u003ccode\u003eafaa070\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/1f43fd2307c13593ea5ba194dcc5e7a814cfade9\"\u003e\u003ccode\u003e1f43fd2\u003c/code\u003e\u003c/a\u003e DOC: Updates to Macro vs micro-averaging in plot_roc.py (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/29845\"\u003e#29845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/ea8a7259f53c2cd78c1a8341bdab228e621dd2ba\"\u003e\u003ccode\u003eea8a725\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for main CI build(s) :lock: :robot: (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/30593\"\u003e#30593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/bc291f1030aa4f122187d5334a426ab1848a7ee6\"\u003e\u003ccode\u003ebc291f1\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for scipy-dev CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/f5f2b9c7b725a957caf8089d254f9176e8fabda9\"\u003e\u003ccode\u003ef5f2b9c\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for free-threaded CI build(s) :lock: :rob...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/acbb8621c816f12f0648f175edf8acb561768ec5\"\u003e\u003ccode\u003eacbb862\u003c/code\u003e\u003c/a\u003e TST Fix doctest due to GradientBoostingClassifier difference with scipy 1.15 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/42831e522f9f08f34e01cd85d60aa852914b135d\"\u003e\u003ccode\u003e42831e5\u003c/code\u003e\u003c/a\u003e FIX warn if an estimator does have a concrete \u003cstrong\u003esklearn_tags\u003c/strong\u003e implementation...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/0d2ce432de05b1f0c3b055572c08bee332c37724\"\u003e\u003ccode\u003e0d2ce43\u003c/code\u003e\u003c/a\u003e FIX change FutureWarnings to DeprecationWarnings for the tags (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/30573\"\u003e#30573\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scikit-learn/scikit-learn/compare/1.4.0...1.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.8.2 to 3.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: 3.9.4\u003c/h2\u003e\n\u003cp\u003eThis is the fourth bugfix release of the 3.9.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains two bug-fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix toolbar icons in GTK backend\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ePoly3DCollection\u003c/code\u003e initialization with list of lists\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eREL: 3.9.3\u003c/h2\u003e\n\u003cp\u003eThis is the third bugfix release of the 3.9.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains several bug-fixes and adjustments:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eaxline\u003c/code\u003e with extremely small slopes\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eaxline\u003c/code\u003e with non-linear axis scales\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eminimumSizeHint\u003c/code\u003e with Qt backend\u003c/li\u003e\n\u003cli\u003eFix config directory usage when it's behind a symlink\u003c/li\u003e\n\u003cli\u003eFix draggable legend when blitting is enabled\u003c/li\u003e\n\u003cli\u003eFix high CPU utilization in the \u003ccode\u003emacosx\u003c/code\u003e backend\u003c/li\u003e\n\u003cli\u003eFix multiple hatch \u003ccode\u003eedgecolors\u003c/code\u003e passed to \u003ccode\u003econtourf\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove compatibility with \u003ccode\u003epytest\u003c/code\u003e 8.2.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eREL: 3.9.2\u003c/h2\u003e\n\u003cp\u003eThis is the second bugfix release of the 3.9.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains several bug-fixes and adjustments:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBe more resilient to I/O failures when writing font cache\u003c/li\u003e\n\u003cli\u003eFix nondeterministic behavior with subplot spacing and constrained layout\u003c/li\u003e\n\u003cli\u003eFix sticky edge tolerance relative to data range\u003c/li\u003e\n\u003cli\u003eImprove formatting of image values in cases of singular norms\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWindows wheels now bundle the MSVC runtime DLL statically to avoid inconsistencies with other wheels and random crashes depending on import order.\u003c/p\u003e\n\u003ch2\u003eREL: 3.9.1\u003c/h2\u003e\n\u003cp\u003eThis is the first bugfix release of the 3.9.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains several bug-fixes and adjustments:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd GitHub artifact attestations for sdist and wheels\u003c/li\u003e\n\u003cli\u003eRe-add \u003ccode\u003ematplotlib.cm.get_cmap\u003c/code\u003e; note this function will still be removed at a later date\u003c/li\u003e\n\u003cli\u003eAllow duplicate backend entry points\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAxes\u003c/code\u003e autoscaling of thin bars at large locations\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAxes\u003c/code\u003e autoscaling with \u003ccode\u003eaxhspan\u003c/code\u003e / \u003ccode\u003eaxvspan\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAxes3D\u003c/code\u003e autoscaling of \u003ccode\u003eLine3DCollection\u003c/code\u003e / \u003ccode\u003ePoly3DCollection\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAxes3D\u003c/code\u003e mouse interactivity with non-default roll angle\u003c/li\u003e\n\u003cli\u003eFix box aspect ratios in \u003ccode\u003eAxes3D\u003c/code\u003e with alternate vertical axis\u003c/li\u003e\n\u003cli\u003eFix case handling of backends specified as \u003ccode\u003emodule://...\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix crash with TkAgg on Windows with \u003ccode\u003etk.window_focus: True\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix interactive update of SubFigures\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/69a98115f8bdaf0f3f615b062d3a380f01f017df\"\u003e\u003ccode\u003e69a9811\u003c/code\u003e\u003c/a\u003e REL: 3.9.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/beb28e9ae646896f772a46468c76a26007d87cf5\"\u003e\u003ccode\u003ebeb28e9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/29297\"\u003e#29297\u003c/a\u003e from QuLogic/auto-backport-of-pr-29295-on-v3.9.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/9d3cc1ec1c68943932059a15ff199bdd6d458fc0\"\u003e\u003ccode\u003e9d3cc1e\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/29295\"\u003e#29295\u003c/a\u003e: BLD: Pin meson-python to \u0026lt;0.17.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/57f7fdf74703eaeec77acdadc7ec655321f602f0\"\u003e\u003ccode\u003e57f7fdf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/29175\"\u003e#29175\u003c/a\u003e from vicliu2001/v3.9.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/3982428df4fed6cb0a6c6ee433e6b8a0d2933e7c\"\u003e\u003ccode\u003e3982428\u003c/code\u003e\u003c/a\u003e changed plot.show to plot.draw\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/6348165c649e8efb410582025534f73997661666\"\u003e\u003ccode\u003e6348165\u003c/code\u003e\u003c/a\u003e modified test for _generate_normals\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/1d7e71eafa2e9f22f605b0cd767165e38fb10a25\"\u003e\u003ccode\u003e1d7e71e\u003c/code\u003e\u003c/a\u003e DOC: Add Zenodo DOI for 3.9.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/4d1e3d247c3e6986f18623abfb7e9d4b6e4f46b2\"\u003e\u003ccode\u003e4d1e3d2\u003c/code\u003e\u003c/a\u003e BLD: bump branch away from tag\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/3ac0aea8be540028cb2510dabb43b290d15b503d\"\u003e\u003ccode\u003e3ac0aea\u003c/code\u003e\u003c/a\u003e REL: 3.9.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/3f7adbd87e281f211779870c38d6bb5da84edc46\"\u003e\u003ccode\u003e3f7adbd\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.9.2-doc' into v3.9.x\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.8.2...v3.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery` from 5.3.4 to 5.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/releases\"\u003ecelery's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.6.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix recursive WorkController instantiation in DjangoWorkerFixup + AttributeError when pool_cls is a string by \u003ca href=\"https://github.com/bruunotrindade\"\u003e\u003ccode\u003e@​bruunotrindade\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10045\"\u003ecelery/celery#10045\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBugfix: Revoked tasks now immediately update backend status to REVOKED by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9869\"\u003ecelery/celery#9869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.2 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10049\"\u003ecelery/celery#10049\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/bruunotrindade\"\u003e\u003ccode\u003e@​bruunotrindade\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10045\"\u003ecelery/celery#10045\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/celery/compare/v5.6.1...v5.6.2\"\u003ehttps://github.com/celery/celery/compare/v5.6.1...v5.6.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.6.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Redis Sentinel ACL authentication support by \u003ca href=\"https://github.com/anthonykuzmich7\"\u003e\u003ccode\u003e@​anthonykuzmich7\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10013\"\u003ecelery/celery#10013\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Broker heartbeats not sent during graceful shutdown by \u003ca href=\"https://github.com/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9986\"\u003ecelery/celery#9986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs \u003ca href=\"https://redirect.github.com/celery/celery/issues/5410\"\u003e#5410\u003c/a\u003e -- Document confirm_publish broker transport option by \u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10016\"\u003ecelery/celery#10016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eclose DB pools only in prefork mode by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10020\"\u003ecelery/celery#10020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Avoid unnecessary Django database connection creation during cleanup by \u003ca href=\"https://github.com/snopoke\"\u003e\u003ccode\u003e@​snopoke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10015\"\u003ecelery/celery#10015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ereliable prefork detection by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10023\"\u003ecelery/celery#10023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebetter coverage by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10029\"\u003ecelery/celery#10029\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: clarify \u003ccode\u003eresult_extended\u003c/code\u003e vs periodic task metadata and show \u003ccode\u003eheaders[\u0026quot;periodic_task_name\u0026quot;]\u003c/code\u003e example by \u003ca href=\"https://github.com/SpaceShaman\"\u003e\u003ccode\u003e@​SpaceShaman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10030\"\u003ecelery/celery#10030\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop importing pytest_subtests by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10032\"\u003ecelery/celery#10032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly use exceptiongroup backport for Python \u0026lt; 3.11 by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10033\"\u003ecelery/celery#10033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.1 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10037\"\u003ecelery/celery#10037\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/anthonykuzmich7\"\u003e\u003ccode\u003e@​anthonykuzmich7\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10013\"\u003ecelery/celery#10013\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9986\"\u003ecelery/celery#9986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10016\"\u003ecelery/celery#10016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snopoke\"\u003e\u003ccode\u003e@​snopoke\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10015\"\u003ecelery/celery#10015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SpaceShaman\"\u003e\u003ccode\u003e@​SpaceShaman\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10030\"\u003ecelery/celery#10030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/celery/compare/v5.6.0...v5.6.1\"\u003ehttps://github.com/celery/celery/compare/v5.6.0...v5.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.6.0\u003c/h2\u003e\n\u003cp\u003eCelery v5.6.0 is now available.\u003c/p\u003e\n\u003ch2\u003eKey Highlights\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://docs.celeryq.dev/en/stable/history/whatsnew-5.6.html\"\u003eWhat's new in Celery 5.6\u003c/a\u003e for a complete overview or read the main highlights below.\u003c/p\u003e\n\u003ch3\u003ePython 3.9 Minimum Version\u003c/h3\u003e\n\u003cp\u003eCelery 5.6.0 drops support for Python 3.8 (EOL). The minimum required Python version is now 3.9. Users still on Python 3.8 must upgrade their Python version before upgrading to Celery 5.6.0.\u003c/p\u003e\n\u003cp\u003eAdditionally, this release includes initial support for Python 3.14.\u003c/p\u003e\n\u003ch3\u003eSQS: Reverted to \u003ccode\u003epycurl\u003c/code\u003e from \u003ccode\u003eurllib3\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe switch from \u003ccode\u003epycurl\u003c/code\u003e to \u003ccode\u003eurllib3\u003c/code\u003e for the SQS transport (introduced in Celery 5.5.0 via Kombu) has been reverted due to critical issues affecting SQS users.\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/celery/celery/blob/main/Changelog.rst\"\u003ecelery's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.6.2\u003c/h1\u003e\n\u003cp\u003e:release-date: 2026-01-04\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Fix recursive WorkController instantiation in DjangoWorkerFixup + AttributeError when pool_cls is a string ([#10045](https://github.com/celery/celery/issues/10045))\n- Bugfix: Revoked tasks now immediately update backend status to REVOKED ([#9869](https://github.com/celery/celery/issues/9869))\n- Prepare for release: v5.6.2 ([#10049](https://github.com/celery/celery/issues/10049))\n\u003cp\u003e.. _version-5.6.1:\u003c/p\u003e\n\u003ch1\u003e5.6.1\u003c/h1\u003e\n\u003cp\u003e:release-date: 2025-12-29\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Redis Sentinel ACL authentication support (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10013\"\u003e#10013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: Broker heartbeats not sent during graceful shutdown (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9986\"\u003e#9986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs \u003ca href=\"https://redirect.github.com/celery/celery/issues/5410\"\u003e#5410\u003c/a\u003e -- Document confirm_publish broker transport option (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eclose DB pools only in prefork mode (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10020\"\u003e#10020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: Avoid unnecessary Django database connection creation during cleanup (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereliable prefork detection (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10023\"\u003e#10023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebetter coverage (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10029\"\u003e#10029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocs: clarify \u003ccode\u003eresult_extended\u003c/code\u003e vs periodic task metadata and show \u003ccode\u003eheaders[\u0026quot;periodic_task_name\u0026quot;]\u003c/code\u003e example (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10030\"\u003e#10030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStop importing pytest_subtests (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10032\"\u003e#10032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOnly use exceptiongroup backport for Python \u0026lt; 3.11 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10033\"\u003e#10033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.1 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10037\"\u003e#10037\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _version-5.6.0:\u003c/p\u003e\n\u003ch1\u003e5.6.0\u003c/h1\u003e\n\u003cp\u003e:release-date: 2025-11-30\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eCelery v5.6.0 is now available.\u003c/p\u003e\n\u003cp\u003eKey Highlights\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nSee :ref:`whatsnew-5.6` for a complete overview or read the main highlights below.\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/6a43c846f183ef0cbade24f4b9a8f7a6ea113b44\"\u003e\u003ccode\u003e6a43c84\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.2 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10049\"\u003e#10049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/333a82f746734151c5cbe848916085455b0a3748\"\u003e\u003ccode\u003e333a82f\u003c/code\u003e\u003c/a\u003e Bugfix: Revoked tasks now immediately update backend status to REVOKED (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9869\"\u003e#9869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/9d6ab110d947270c4edf0b42454266d2954e653d\"\u003e\u003ccode\u003e9d6ab11\u003c/code\u003e\u003c/a\u003e Fix recursive WorkController instantiation in DjangoWorkerFixup + AttributeEr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/21dbc73f81d2fae058de49e665afaa1cd92da5c0\"\u003e\u003ccode\u003e21dbc73\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.1 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10037\"\u003e#10037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/ba20bed7723c684d12ddd62d6a7c0c0d901b3351\"\u003e\u003ccode\u003eba20bed\u003c/code\u003e\u003c/a\u003e Only use exceptiongroup backport for Python \u0026lt; 3.11 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10033\"\u003e#10033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/21675299bc2d10c648448ec5221136e07c1eec1a\"\u003e\u003ccode\u003e2167529\u003c/code\u003e\u003c/a\u003e Stop importing pytest_subtests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/0527296acb1f1790788301d4395ba6d5ce2a9704\"\u003e\u003ccode\u003e0527296\u003c/code\u003e\u003c/a\u003e Bump google-cloud-firestore from 2.21.0 to 2.22.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/5f8659bdba4561796d66e938a1e2c71d4489562f\"\u003e\u003ccode\u003e5f8659b\u003c/code\u003e\u003c/a\u003e Clarify 'result_extended' setting usage in tasks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/f19db7008682c782d85e69b5ce736970491752ea\"\u003e\u003ccode\u003ef19db70\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.19.0 to 1.19.1 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10028\"\u003e#10028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/6da72bde60553a1c350eef1e17d834d004ed099d\"\u003e\u003ccode\u003e6da72bd\u003c/code\u003e\u003c/a\u003e better coverage (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10029\"\u003e#10029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/celery/celery/compare/v5.3.4...v5.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scipy` from 1.11.4 to 1.13.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scipy/scipy/releases\"\u003escipy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSciPy 1.13.1 Release Notes\u003c/h1\u003e\n\u003cp\u003eSciPy \u003ccode\u003e1.13.1\u003c/code\u003e is a bug-fix release with no new features\ncompared to \u003ccode\u003e1.13.0\u003c/code\u003e. The version of OpenBLAS shipped with\nthe PyPI binaries has been increased to \u003ccode\u003e0.3.27\u003c/code\u003e.\u003c/p\u003e\n\u003ch1\u003eAuthors\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eName (commits)\u003c/li\u003e\n\u003cli\u003eh-vetinari (1)\u003c/li\u003e\n\u003cli\u003eJake Bowhay (2)\u003c/li\u003e\n\u003cli\u003eEvgeni Burovski (6)\u003c/li\u003e\n\u003cli\u003eSean Cheah (2)\u003c/li\u003e\n\u003cli\u003eLucas Colley (2)\u003c/li\u003e\n\u003cli\u003eDWesl (2)\u003c/li\u003e\n\u003cli\u003eRalf Gommers (7)\u003c/li\u003e\n\u003cli\u003eBen Greiner (1) +\u003c/li\u003e\n\u003cli\u003eMatt Haberland (2)\u003c/li\u003e\n\u003cli\u003eGregory R. Lee (1)\u003c/li\u003e\n\u003cli\u003ePhilip Loche (1) +\u003c/li\u003e\n\u003cli\u003eSijo Valayakkad Manikandan (1) +\u003c/li\u003e\n\u003cli\u003eMatti Picus (1)\u003c/li\u003e\n\u003cli\u003eTyler Reddy (62)\u003c/li\u003e\n\u003cli\u003eAtsushi Sakai (1)\u003c/li\u003e\n\u003cli\u003eDaniel Schmitz (2)\u003c/li\u003e\n\u003cli\u003eDan Schult (3)\u003c/li\u003e\n\u003cli\u003eScott Shambaugh (2)\u003c/li\u003e\n\u003cli\u003eEdgar Andrés Margffoy Tuay (1)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eA total of 19 people contributed to this release.\nPeople with a \u0026quot;+\u0026quot; by their names contributed a patch for the first time.\nThis list of names is automatically generated, and may not be fully complete.\u003c/p\u003e\n\u003ch1\u003eSciPy 1.13.0 Release Notes\u003c/h1\u003e\n\u003cp\u003eSciPy \u003ccode\u003e1.13.0\u003c/code\u003e is the culmination of 3 months of hard work. This\nout-of-band release aims to support NumPy \u003ccode\u003e2.0.0\u003c/code\u003e, and is backwards\ncompatible to NumPy \u003ccode\u003e1.22.4\u003c/code\u003e. The version of OpenBLAS used to build\nthe PyPI wheels has been increased to \u003ccode\u003e0.3.26.dev\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis release requires Python 3.9+ and NumPy 1.22.4 or greater.\u003c/p\u003e\n\u003cp\u003eFor running on PyPy, PyPy3 6.0+ is required.\u003c/p\u003e\n\u003ch1\u003eHighlights of this release\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/44e4ebaac992fde33f04638b99629d23973cb9b2\"\u003e\u003ccode\u003e44e4eba\u003c/code\u003e\u003c/a\u003e REL: SciPy 1.13.1 release commit [wheel build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/2eb8e1b7380da0fada12ffd8d2c41f62dc74cb2e\"\u003e\u003ccode\u003e2eb8e1b\u003c/code\u003e\u003c/a\u003e Merge pull requ...\n\n_Description has been truncated_","html_url":"https://github.com/ChunkyTortoise/EnterpriseHub/pull/22","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChunkyTortoise%2FEnterpriseHub/issues/22","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/22/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":"3827610593","node_id":"PR_kwDOO7JJJ8695mVs","number":54,"state":"open","title":"build(deps): bump the python group across 1 directory with 60 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-19T01:08:56.000Z","updated_at":"2026-02-02T01:11:45.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":60,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.0","repository_url":"https://github.com/django/asgiref"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.47.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.16.2","repository_url":"https://github.com/pypa/hatch"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.28.0","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-context","old_version":"6.0.1","new_version":"6.1.0","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.4.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"keyring","old_version":"25.6.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pyasn1","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.2.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.5","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.14.0","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.26","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.36.1","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.40.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.14.0"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"django-compressor","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/django-compressor/django-compressor"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.3.2"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.5"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.8"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.13","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.13.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 60 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.1` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.3` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.47.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.16.2` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.28.0` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.1` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.0.1` | `6.1.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.4.0` |\n| [keyring](https://github.com/jaraco/keyring) | `25.6.0` | `25.7.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.1` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.1` | `0.6.2` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.2.0` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.5` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.14.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.3` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.26` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.36.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.2` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.40.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.14.0` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [django-compressor](https://github.com/django-compressor/django-compressor) | `4.5.1` | `4.6.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.3.2` |\n| [werkzeug[watchdog]](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.5` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.8` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.13` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.13.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.5.1` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.12.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.12.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChanged all functions currently raising the private \u003ccode\u003eNoCurrentAsyncBackend\u003c/code\u003e exception (since v4.12.0) to instead raise the public \u003ccode\u003eNoEventLoopError\u003c/code\u003e exception (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1048\"\u003e#1048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e not working with instance methods (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1042\"\u003e#1042\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.12.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for asyncio's \u003ca href=\"https://docs.python.org/3/library/asyncio-graph.html\"\u003etask call graphs\u003c/a\u003e on Python 3.14 and later when using AnyIO's task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1025\"\u003e#1025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded an asynchronous implementation of the \u003ccode\u003efunctools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1001\"\u003e#1001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ewinloop\u003c/a\u003e implementation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/960\"\u003e#960\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for use as a context manager to \u003ccode\u003eanyio.lowlevel.RunVar\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1003\"\u003e#1003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e__all__\u003c/code\u003e declarations to public submodules (\u003ccode\u003eanyio.lowlevel\u003c/code\u003e etc.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1009\"\u003e#1009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to set the token count of a \u003ccode\u003eCapacityLimiter\u003c/code\u003e to zero (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1019\"\u003e#1019\u003c/a\u003e; requires Python 3.10 or later when using Trio)\u003c/li\u003e\n\u003cli\u003eAdded parameters \u003ccode\u003ecase_sensitive\u003c/code\u003e and \u003ccode\u003erecurse_symlinks\u003c/code\u003e along with support for path-like objects to \u003ccode\u003eanyio.Path.glob()\u003c/code\u003e and \u003ccode\u003eanyio.Path.rglob()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1033\"\u003e#1033\u003c/a\u003e; PR by \u003ca href=\"https://github.com/northisup\"\u003e\u003ccode\u003e@​northisup\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped \u003ccode\u003esniffio\u003c/code\u003e as a direct dependency and added the \u003ccode\u003eget_available_backends()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1021\"\u003e#1021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not raising \u003ccode\u003eClosedResourceError\u003c/code\u003e and \u003ccode\u003eBrokenResourceError\u003c/code\u003e on asyncio. Previously, a non-AnyIO exception was raised in such cases (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not checkpointing before writing data on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1002\"\u003e#1002\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a race condition where cancelling a \u003ccode\u003eFuture\u003c/code\u003e from \u003ccode\u003eBlockingPortal.start_task_soon()\u003c/code\u003e would sometimes not cancel the async function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1011\"\u003e#1011\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the presence of the pytest plugin causing breakage with older versions of pytest (\u0026lt;= 6.1.2) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1028\"\u003e#1028\u003c/a\u003e; PR by \u003ca href=\"https://github.com/saper\"\u003e\u003ccode\u003e@​saper\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a rarely occurring \u003ccode\u003eRuntimeError: Set changed size during iteration\u003c/code\u003e while shutting down the process pool when using the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/a0dccbd78d75886247ae7846b460fd390cc94fbd\"\u003e\u003ccode\u003ea0dccbd\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/e1121a735c977c00c18b3a581d28daf83a279833\"\u003e\u003ccode\u003ee1121a7\u003c/code\u003e\u003c/a\u003e Enabled tests for the 4.12.x branch\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/69ab43e549517ce554f84365fed9da90e806c303\"\u003e\u003ccode\u003e69ab43e\u003c/code\u003e\u003c/a\u003e Fixed \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e not working with methods (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/4f4b33ed56edd1bc4785a368a103ad8138730d91\"\u003e\u003ccode\u003e4f4b33e\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003eBlockingPortal.__new__\u003c/code\u003e hack (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1053\"\u003e#1053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/af17d89b80ebbd526215e2dbd025b284730aaa3f\"\u003e\u003ccode\u003eaf17d89\u003c/code\u003e\u003c/a\u003e Replaced the NoCurrentAsyncBackend exception with NoEventLoopError (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/4310264312a2e86e792481bdb05bdb381678a6b5\"\u003e\u003ccode\u003e4310264\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0cc6723ba5a2fdaa98a24852d3681c4ed99b8863\"\u003e\u003ccode\u003e0cc6723\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/bc021b634291223d6829c0a689152173443a8545\"\u003e\u003ccode\u003ebc021b6\u003c/code\u003e\u003c/a\u003e Fixed the download-artifact settings to retain the expected behavior\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/c6000aa2837f75733f3c09c454f5a31eb9f9f536\"\u003e\u003ccode\u003ec6000aa\u003c/code\u003e\u003c/a\u003e Corrected the format of the version in the changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9d1bfe0da4261bcef3c10cd31218237805a89937\"\u003e\u003ccode\u003e9d1bfe0\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.12.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\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/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.8.1 to 3.11.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/asgiref/blob/main/CHANGELOG.txt\"\u003easgiref's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.0 (2025-11-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esync_to_async\u003c/code\u003e gains a \u003ccode\u003econtext\u003c/code\u003e parameter, similar to those for\n\u003ccode\u003easyncio.create_task\u003c/code\u003e, \u003ccode\u003eTaskGroup\u003c/code\u003e \u0026amp;co, that can be used on Python 3.11+ to\ncontrol the context used by the underlying task.\u003c/p\u003e\n\u003cp\u003eThe parent context is already propagated by default but the additional\ncontrol is useful if multiple \u003ccode\u003esync_to_async\u003c/code\u003e calls need to share the same\ncontext, e.g. when used with \u003ccode\u003easyncio.gather()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.10.0 (2025-10-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded AsyncSingleThreadContext context manager to ensure multiple AsyncToSync\ninvocations use the same thread. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.2 (2025-09-23)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes wsgi.errors file descriptor in WsgiToAsgi adapter.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b7b15b20ddb51d1d8b6978165c0986686cd08c1d\"\u003e\u003ccode\u003eb7b15b2\u003c/code\u003e\u003c/a\u003e Releasing 3.11.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/901ee4f96db156f0b462690dd7c9f5aa99bcce03\"\u003e\u003ccode\u003e901ee4f\u003c/code\u003e\u003c/a\u003e Added a custom context parameter for the sync_to_async (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2138f0317d79cedd065571447ae0a7571989550e\"\u003e\u003ccode\u003e2138f03\u003c/code\u003e\u003c/a\u003e Fixed typo in test file comment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f587b122af17bdba5749c30b96d2237bc1c2dfdf\"\u003e\u003ccode\u003ef587b12\u003c/code\u003e\u003c/a\u003e Releasing 3.10.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b08087c3b6df811a0524585c4d4dafdc6b12c222\"\u003e\u003ccode\u003eb08087c\u003c/code\u003e\u003c/a\u003e Added AsyncSingleThreadContext (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/3471a0c09bd043d61c299308c0c8519ab6c0f774\"\u003e\u003ccode\u003e3471a0c\u003c/code\u003e\u003c/a\u003e Releasing 3.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/4f892bd261cee9afe51d67333e9bc7cd98b39a35\"\u003e\u003ccode\u003e4f892bd\u003c/code\u003e\u003c/a\u003e Remove Python 3.8 from tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/83cd6f3c6f59a66999446c2893cdb3fcae3c03c5\"\u003e\u003ccode\u003e83cd6f3\u003c/code\u003e\u003c/a\u003e Run CI against Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/796b9f14fd92d3131c7c39fab308ddd986d271eb\"\u003e\u003ccode\u003e796b9f1\u003c/code\u003e\u003c/a\u003e Fix incorrect Trailer header (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/29b108b0a9a5eddae3e282ba33915412a855e529\"\u003e\u003ccode\u003e29b108b\u003c/code\u003e\u003c/a\u003e Fixed \u003ca href=\"https://redirect.github.com/django/asgiref/issues/529\"\u003e#529\u003c/a\u003e: wsgi.errors should be a StringIO (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.11.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.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 `click` from 8.1.8 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\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\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/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\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 \u003ccode\u003eCliRunner\u003c/code\u003e. :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.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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.1.8...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu 24.04 for testing in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9677\"\u003e#9677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate test matrix to use Django 5.2 stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epyupgrade\u003c/code\u003e to \u003ccode\u003epre-commit\u003c/code\u003e hooks in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix test with Django 5 when \u003ccode\u003epytz\u003c/code\u003e is available in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9715\"\u003e#9715\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/araggohnxd\"\u003e\u003ccode\u003e@​araggohnxd\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mbeijen\"\u003e\u003ccode\u003e@​mbeijen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ren000thomas\"\u003e\u003ccode\u003e@​ren000thomas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\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/encode/django-rest-framework/commit/de018df2aaacb1d2d947c0cfbfaa6d08fb50557d\"\u003e\u003ccode\u003ede018df\u003c/code\u003e\u003c/a\u003e Prepare 3.16.1 release (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9752\"\u003e#9752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/a7d050f5b3388ed9dc69c7770fdbd9654d4639ae\"\u003e\u003ccode\u003ea7d050f\u003c/code\u003e\u003c/a\u003e Turkish Translation updates (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9749\"\u003e#9749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/853969c69c815be69513c2f63a41285858a45352\"\u003e\u003ccode\u003e853969c\u003c/code\u003e\u003c/a\u003e Fix test with Django 5 when pytz is available (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9715\"\u003e#9715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/2ae8c117dae5d7912760492a1df397e2fcd8c7a4\"\u003e\u003ccode\u003e2ae8c11\u003c/code\u003e\u003c/a\u003e Add note to tutorial about required request in serializer context when using ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/70e54f45add6a96f92bbadbcff30fc211f2ce0c3\"\u003e\u003ccode\u003e70e54f4\u003c/code\u003e\u003c/a\u003e Revert docs back to djangorestframework-guardian (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9734\"\u003e#9734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30384947053b1f2b2c9e82cafd1da934d3442a61\"\u003e\u003ccode\u003e3038494\u003c/code\u003e\u003c/a\u003e Document that unique constraints cause \u003ccode\u003erequired=True\u003c/code\u003e in ModelSerializer (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9\"\u003e#9\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enco...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/54","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/54","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/54/packages"},{"uuid":"3802998815","node_id":"PR_kwDOGujB-868oZJ5","number":182,"state":"open","title":"deps-dev(deps-dev): bump websocket-client from 1.8.0 to 1.9.0","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:52:02.000Z","updated_at":"2026-01-12T06:52:03.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps-dev(deps-dev)","packages":[{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":null,"ecosystem":"pip"},"body":"Bumps [websocket-client](https://github.com/websocket-client/websocket-client) from 1.8.0 to 1.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e1.9.0\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6861ee417b65c183a81671bc57cace26c9c7ee29\"\u003e\u003ccode\u003e6861ee4\u003c/code\u003e\u003c/a\u003e Use ipaddress module for no_proxy parsing (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/729bdb8fc063397d298261ed6f2288f272b7f6de\"\u003e\u003ccode\u003e729bdb8\u003c/code\u003e\u003c/a\u003e Coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/f22579afed961d89a306d0018f373922bf567d22\"\u003e\u003ccode\u003ef22579a\u003c/code\u003e\u003c/a\u003e Linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/9564030bed1112497bf1c879673870419365a064\"\u003e\u003ccode\u003e9564030\u003c/code\u003e\u003c/a\u003e Change echo URL in docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/c0fe0f7a18867599c9b62fc61f71036a8d5bdfcf\"\u003e\u003ccode\u003ec0fe0f7\u003c/code\u003e\u003c/a\u003e apply black formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/813d570fc95114aa48e8ddf8b767390a1a6985f7\"\u003e\u003ccode\u003e813d570\u003c/code\u003e\u003c/a\u003e Resolve all mypy errors, with AI assistance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6020f37e784b77f6627b38797595f038aa76f26e\"\u003e\u003ccode\u003e6020f37\u003c/code\u003e\u003c/a\u003e black formatting fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.8.0...v1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=websocket-client\u0026package-manager=pip\u0026previous-version=1.8.0\u0026new-version=1.9.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/TensorAeroSpace/TensorAeroSpace/pull/182","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/TensorAeroSpace%2FTensorAeroSpace/issues/182","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/182/packages"},{"uuid":"3779809235","node_id":"PR_kwDOO7JJJ867ctOq","number":52,"state":"closed","title":"build(deps): bump the python group across 1 directory with 60 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-13T04:41:36.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-05T00:24:42.000Z","updated_at":"2026-01-13T04:41:37.000Z","time_to_close":706614,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":60,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.0","repository_url":"https://github.com/django/asgiref"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.2","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.45.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.16.2","repository_url":"https://github.com/pypa/hatch"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.28.0","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-context","old_version":"6.0.1","new_version":"6.0.2","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.4.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"keyring","old_version":"25.6.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.2.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.5","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.12.1.14","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.21","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.4","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.40.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.13.1"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"django-compressor","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/django-compressor/django-compressor"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.3.2"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.8"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.13.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 60 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.0` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.2` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.45.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.16.2` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.28.0` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.1` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.0.1` | `6.0.2` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.4.0` |\n| [keyring](https://github.com/jaraco/keyring) | `25.6.0` | `25.7.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.1` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.2.0` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.5` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.12.1.14` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.2` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.21` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.4` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.2` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.40.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.13.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [django-compressor](https://github.com/django-compressor/django-compressor) | `4.5.1` | `4.6.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.3.2` |\n| [werkzeug[watchdog]](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.8` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.10` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.13.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.5.1` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.12.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.12.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for asyncio's \u003ca href=\"https://docs.python.org/3/library/asyncio-graph.html\"\u003etask call graphs\u003c/a\u003e on Python 3.14 and later when using AnyIO's task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1025\"\u003e#1025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded an asynchronous implementation of the \u003ccode\u003efunctools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1001\"\u003e#1001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ewinloop\u003c/a\u003e implementation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/960\"\u003e#960\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for use as a context manager to \u003ccode\u003eanyio.lowlevel.RunVar\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1003\"\u003e#1003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e__all__\u003c/code\u003e declarations to public submodules (\u003ccode\u003eanyio.lowlevel\u003c/code\u003e etc.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1009\"\u003e#1009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to set the token count of a \u003ccode\u003eCapacityLimiter\u003c/code\u003e to zero (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1019\"\u003e#1019\u003c/a\u003e; requires Python 3.10 or later when using Trio)\u003c/li\u003e\n\u003cli\u003eAdded parameters \u003ccode\u003ecase_sensitive\u003c/code\u003e and \u003ccode\u003erecurse_symlinks\u003c/code\u003e along with support for path-like objects to \u003ccode\u003eanyio.Path.glob()\u003c/code\u003e and \u003ccode\u003eanyio.Path.rglob()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1033\"\u003e#1033\u003c/a\u003e; PR by \u003ca href=\"https://github.com/northisup\"\u003e\u003ccode\u003e@​northisup\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped \u003ccode\u003esniffio\u003c/code\u003e as a direct dependency and added the \u003ccode\u003eget_available_backends()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1021\"\u003e#1021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not raising \u003ccode\u003eClosedResourceError\u003c/code\u003e and \u003ccode\u003eBrokenResourceError\u003c/code\u003e on asyncio. Previously, a non-AnyIO exception was raised in such cases (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not checkpointing before writing data on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1002\"\u003e#1002\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a race condition where cancelling a \u003ccode\u003eFuture\u003c/code\u003e from \u003ccode\u003eBlockingPortal.start_task_soon()\u003c/code\u003e would sometimes not cancel the async function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1011\"\u003e#1011\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the presence of the pytest plugin causing breakage with older versions of pytest (\u0026lt;= 6.1.2) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1028\"\u003e#1028\u003c/a\u003e; PR by \u003ca href=\"https://github.com/saper\"\u003e\u003ccode\u003e@​saper\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a rarely occurring \u003ccode\u003eRuntimeError: Set changed size during iteration\u003c/code\u003e while shutting down the process pool when using the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/bc021b634291223d6829c0a689152173443a8545\"\u003e\u003ccode\u003ebc021b6\u003c/code\u003e\u003c/a\u003e Fixed the download-artifact settings to retain the expected behavior\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/c6000aa2837f75733f3c09c454f5a31eb9f9f536\"\u003e\u003ccode\u003ec6000aa\u003c/code\u003e\u003c/a\u003e Corrected the format of the version in the changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9d1bfe0da4261bcef3c10cd31218237805a89937\"\u003e\u003ccode\u003e9d1bfe0\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/77f7ce25e12c9becf5081105a47b1914e50a3e0a\"\u003e\u003ccode\u003e77f7ce2\u003c/code\u003e\u003c/a\u003e Fixed RuntimeError while shutting down the asyncio process pool (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aecc666e6b3b40f977ee715d141bdd89711b45cb\"\u003e\u003ccode\u003eaecc666\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/e5569adf98394dfabebccf215a04d05d7819b506\"\u003e\u003ccode\u003ee5569ad\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/dde3ab8583cb194e663f6fb87703a4a79e2701eb\"\u003e\u003ccode\u003edde3ab8\u003c/code\u003e\u003c/a\u003e Moved a changelog entry to its correct position\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/250d4f183245bf7ee5ead0ff39d521cda2b8d617\"\u003e\u003ccode\u003e250d4f1\u003c/code\u003e\u003c/a\u003e Restore compatibility with pytest\u0026lt;=6.1.2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3708e227838e2f51464900cf806b25c30ca458a7\"\u003e\u003ccode\u003e3708e22\u003c/code\u003e\u003c/a\u003e Fixed a typo in the documentation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9adbe08c55e725b0388dcc4ab7556875da881a4c\"\u003e\u003ccode\u003e9adbe08\u003c/code\u003e\u003c/a\u003e Add new params to Path.glob \u0026amp; Path.rglob introduced since 3.12 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\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/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.8.1 to 3.11.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/asgiref/blob/main/CHANGELOG.txt\"\u003easgiref's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.0 (2025-11-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esync_to_async\u003c/code\u003e gains a \u003ccode\u003econtext\u003c/code\u003e parameter, similar to those for\n\u003ccode\u003easyncio.create_task\u003c/code\u003e, \u003ccode\u003eTaskGroup\u003c/code\u003e \u0026amp;co, that can be used on Python 3.11+ to\ncontrol the context used by the underlying task.\u003c/p\u003e\n\u003cp\u003eThe parent context is already propagated by default but the additional\ncontrol is useful if multiple \u003ccode\u003esync_to_async\u003c/code\u003e calls need to share the same\ncontext, e.g. when used with \u003ccode\u003easyncio.gather()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.10.0 (2025-10-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded AsyncSingleThreadContext context manager to ensure multiple AsyncToSync\ninvocations use the same thread. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.2 (2025-09-23)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes wsgi.errors file descriptor in WsgiToAsgi adapter.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b7b15b20ddb51d1d8b6978165c0986686cd08c1d\"\u003e\u003ccode\u003eb7b15b2\u003c/code\u003e\u003c/a\u003e Releasing 3.11.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/901ee4f96db156f0b462690dd7c9f5aa99bcce03\"\u003e\u003ccode\u003e901ee4f\u003c/code\u003e\u003c/a\u003e Added a custom context parameter for the sync_to_async (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2138f0317d79cedd065571447ae0a7571989550e\"\u003e\u003ccode\u003e2138f03\u003c/code\u003e\u003c/a\u003e Fixed typo in test file comment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f587b122af17bdba5749c30b96d2237bc1c2dfdf\"\u003e\u003ccode\u003ef587b12\u003c/code\u003e\u003c/a\u003e Releasing 3.10.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b08087c3b6df811a0524585c4d4dafdc6b12c222\"\u003e\u003ccode\u003eb08087c\u003c/code\u003e\u003c/a\u003e Added AsyncSingleThreadContext (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/3471a0c09bd043d61c299308c0c8519ab6c0f774\"\u003e\u003ccode\u003e3471a0c\u003c/code\u003e\u003c/a\u003e Releasing 3.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/4f892bd261cee9afe51d67333e9bc7cd98b39a35\"\u003e\u003ccode\u003e4f892bd\u003c/code\u003e\u003c/a\u003e Remove Python 3.8 from tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/83cd6f3c6f59a66999446c2893cdb3fcae3c03c5\"\u003e\u003ccode\u003e83cd6f3\u003c/code\u003e\u003c/a\u003e Run CI against Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/796b9f14fd92d3131c7c39fab308ddd986d271eb\"\u003e\u003ccode\u003e796b9f1\u003c/code\u003e\u003c/a\u003e Fix incorrect Trailer header (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/29b108b0a9a5eddae3e282ba33915412a855e529\"\u003e\u003ccode\u003e29b108b\u003c/code\u003e\u003c/a\u003e Fixed \u003ca href=\"https://redirect.github.com/django/asgiref/issues/529\"\u003e#529\u003c/a\u003e: wsgi.errors should be a StringIO (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.11.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.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 `click` from 8.1.8 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\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\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/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\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 \u003ccode\u003eCliRunner\u003c/code\u003e. :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.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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.1.8...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu 24.04 for testing in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9677\"\u003e#9677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate test matrix to use Django 5.2 stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epyupgrade\u003c/code\u003e to \u003ccode\u003epre-commit\u003c/code\u003e hooks in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix test with Django 5 when \u003ccode\u003epytz\u003c/code\u003e is available in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9715\"\u003e#9715\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/araggohnxd\"\u003e\u003ccode\u003e@​araggohnxd\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mbeijen\"\u003e\u003ccode\u003e@​mbeijen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ren000thomas\"\u003e\u003ccode\u003e@​ren000thomas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\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/encode/django-rest-framework/commit/de018df2aaacb1d2d947c0cfbfaa6d08fb50557d\"\u003e\u003ccode\u003ede018df\u003c/code\u003e\u003c/a\u003e Prepare 3.16.1 release (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9752\"\u003e#9752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/a7d050f5b3388ed9dc69c7770fdbd9654d4639ae\"\u003e\u003ccode\u003ea7d050f\u003c/code\u003e\u003c/a\u003e Turkish Translation updates (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9749\"\u003e#9749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/853969c69c815be69513c2f63a41285858a45352\"\u003e\u003ccode\u003e853969c\u003c/code\u003e\u003c/a\u003e Fix test with Django 5 when pytz is available (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9715\"\u003e#9715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/2ae8c117dae5d7912760492a1df397e2fcd8c7a...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/52","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/52","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/52/packages"},{"uuid":"3761179744","node_id":"PR_kwDOO7JJJ866hgPU","number":51,"state":"closed","title":"build(deps): bump the python group across 1 directory with 61 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-05T00:21:18.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-25T00:21:31.000Z","updated_at":"2026-01-05T00:21:19.000Z","time_to_close":950387,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":61,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.0","repository_url":"https://github.com/django/asgiref"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.45.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.16.2","repository_url":"https://github.com/pypa/hatch"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.28.0","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-context","old_version":"6.0.1","new_version":"6.0.2","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.4.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"keyring","old_version":"25.6.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.2.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.5","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.12.1.14","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.18","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.4","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.0","repository_url":"https://github.com/celery/celery"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.40.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.13.1"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"django-compressor","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/django-compressor/django-compressor"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.3.2"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.8"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.13.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 61 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.0` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.1` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.45.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.16.2` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.28.0` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.1` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.0.1` | `6.0.2` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.4.0` |\n| [keyring](https://github.com/jaraco/keyring) | `25.6.0` | `25.7.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.1` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.2.0` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.5` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.12.1.14` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.2` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.18` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.4` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.40.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.13.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [django-compressor](https://github.com/django-compressor/django-compressor) | `4.5.1` | `4.6.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.3.2` |\n| [werkzeug[watchdog]](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.8` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.10` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.13.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.5.1` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.12.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.12.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for asyncio's \u003ca href=\"https://docs.python.org/3/library/asyncio-graph.html\"\u003etask call graphs\u003c/a\u003e on Python 3.14 and later when using AnyIO's task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1025\"\u003e#1025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded an asynchronous implementation of the \u003ccode\u003efunctools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1001\"\u003e#1001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ewinloop\u003c/a\u003e implementation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/960\"\u003e#960\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for use as a context manager to \u003ccode\u003eanyio.lowlevel.RunVar\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1003\"\u003e#1003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e__all__\u003c/code\u003e declarations to public submodules (\u003ccode\u003eanyio.lowlevel\u003c/code\u003e etc.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1009\"\u003e#1009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to set the token count of a \u003ccode\u003eCapacityLimiter\u003c/code\u003e to zero (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1019\"\u003e#1019\u003c/a\u003e; requires Python 3.10 or later when using Trio)\u003c/li\u003e\n\u003cli\u003eAdded parameters \u003ccode\u003ecase_sensitive\u003c/code\u003e and \u003ccode\u003erecurse_symlinks\u003c/code\u003e along with support for path-like objects to \u003ccode\u003eanyio.Path.glob()\u003c/code\u003e and \u003ccode\u003eanyio.Path.rglob()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1033\"\u003e#1033\u003c/a\u003e; PR by \u003ca href=\"https://github.com/northisup\"\u003e\u003ccode\u003e@​northisup\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped \u003ccode\u003esniffio\u003c/code\u003e as a direct dependency and added the \u003ccode\u003eget_available_backends()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1021\"\u003e#1021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not raising \u003ccode\u003eClosedResourceError\u003c/code\u003e and \u003ccode\u003eBrokenResourceError\u003c/code\u003e on asyncio. Previously, a non-AnyIO exception was raised in such cases (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not checkpointing before writing data on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1002\"\u003e#1002\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a race condition where cancelling a \u003ccode\u003eFuture\u003c/code\u003e from \u003ccode\u003eBlockingPortal.start_task_soon()\u003c/code\u003e would sometimes not cancel the async function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1011\"\u003e#1011\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the presence of the pytest plugin causing breakage with older versions of pytest (\u0026lt;= 6.1.2) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1028\"\u003e#1028\u003c/a\u003e; PR by \u003ca href=\"https://github.com/saper\"\u003e\u003ccode\u003e@​saper\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a rarely occurring \u003ccode\u003eRuntimeError: Set changed size during iteration\u003c/code\u003e while shutting down the process pool when using the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/bc021b634291223d6829c0a689152173443a8545\"\u003e\u003ccode\u003ebc021b6\u003c/code\u003e\u003c/a\u003e Fixed the download-artifact settings to retain the expected behavior\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/c6000aa2837f75733f3c09c454f5a31eb9f9f536\"\u003e\u003ccode\u003ec6000aa\u003c/code\u003e\u003c/a\u003e Corrected the format of the version in the changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9d1bfe0da4261bcef3c10cd31218237805a89937\"\u003e\u003ccode\u003e9d1bfe0\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/77f7ce25e12c9becf5081105a47b1914e50a3e0a\"\u003e\u003ccode\u003e77f7ce2\u003c/code\u003e\u003c/a\u003e Fixed RuntimeError while shutting down the asyncio process pool (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aecc666e6b3b40f977ee715d141bdd89711b45cb\"\u003e\u003ccode\u003eaecc666\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/e5569adf98394dfabebccf215a04d05d7819b506\"\u003e\u003ccode\u003ee5569ad\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/dde3ab8583cb194e663f6fb87703a4a79e2701eb\"\u003e\u003ccode\u003edde3ab8\u003c/code\u003e\u003c/a\u003e Moved a changelog entry to its correct position\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/250d4f183245bf7ee5ead0ff39d521cda2b8d617\"\u003e\u003ccode\u003e250d4f1\u003c/code\u003e\u003c/a\u003e Restore compatibility with pytest\u0026lt;=6.1.2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3708e227838e2f51464900cf806b25c30ca458a7\"\u003e\u003ccode\u003e3708e22\u003c/code\u003e\u003c/a\u003e Fixed a typo in the documentation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9adbe08c55e725b0388dcc4ab7556875da881a4c\"\u003e\u003ccode\u003e9adbe08\u003c/code\u003e\u003c/a\u003e Add new params to Path.glob \u0026amp; Path.rglob introduced since 3.12 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\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/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.8.1 to 3.11.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/asgiref/blob/main/CHANGELOG.txt\"\u003easgiref's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.0 (2025-11-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esync_to_async\u003c/code\u003e gains a \u003ccode\u003econtext\u003c/code\u003e parameter, similar to those for\n\u003ccode\u003easyncio.create_task\u003c/code\u003e, \u003ccode\u003eTaskGroup\u003c/code\u003e \u0026amp;co, that can be used on Python 3.11+ to\ncontrol the context used by the underlying task.\u003c/p\u003e\n\u003cp\u003eThe parent context is already propagated by default but the additional\ncontrol is useful if multiple \u003ccode\u003esync_to_async\u003c/code\u003e calls need to share the same\ncontext, e.g. when used with \u003ccode\u003easyncio.gather()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.10.0 (2025-10-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded AsyncSingleThreadContext context manager to ensure multiple AsyncToSync\ninvocations use the same thread. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.2 (2025-09-23)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes wsgi.errors file descriptor in WsgiToAsgi adapter.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b7b15b20ddb51d1d8b6978165c0986686cd08c1d\"\u003e\u003ccode\u003eb7b15b2\u003c/code\u003e\u003c/a\u003e Releasing 3.11.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/901ee4f96db156f0b462690dd7c9f5aa99bcce03\"\u003e\u003ccode\u003e901ee4f\u003c/code\u003e\u003c/a\u003e Added a custom context parameter for the sync_to_async (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2138f0317d79cedd065571447ae0a7571989550e\"\u003e\u003ccode\u003e2138f03\u003c/code\u003e\u003c/a\u003e Fixed typo in test file comment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f587b122af17bdba5749c30b96d2237bc1c2dfdf\"\u003e\u003ccode\u003ef587b12\u003c/code\u003e\u003c/a\u003e Releasing 3.10.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b08087c3b6df811a0524585c4d4dafdc6b12c222\"\u003e\u003ccode\u003eb08087c\u003c/code\u003e\u003c/a\u003e Added AsyncSingleThreadContext (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/3471a0c09bd043d61c299308c0c8519ab6c0f774\"\u003e\u003ccode\u003e3471a0c\u003c/code\u003e\u003c/a\u003e Releasing 3.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/4f892bd261cee9afe51d67333e9bc7cd98b39a35\"\u003e\u003ccode\u003e4f892bd\u003c/code\u003e\u003c/a\u003e Remove Python 3.8 from tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/83cd6f3c6f59a66999446c2893cdb3fcae3c03c5\"\u003e\u003ccode\u003e83cd6f3\u003c/code\u003e\u003c/a\u003e Run CI against Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/796b9f14fd92d3131c7c39fab308ddd986d271eb\"\u003e\u003ccode\u003e796b9f1\u003c/code\u003e\u003c/a\u003e Fix incorrect Trailer header (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/29b108b0a9a5eddae3e282ba33915412a855e529\"\u003e\u003ccode\u003e29b108b\u003c/code\u003e\u003c/a\u003e Fixed \u003ca href=\"https://redirect.github.com/django/asgiref/issues/529\"\u003e#529\u003c/a\u003e: wsgi.errors should be a StringIO (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.11.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.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 `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 `click` from 8.1.8 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\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\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/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\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 \u003ccode\u003eCliRunner\u003c/code\u003e. :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.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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.1.8...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu ...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/51","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/51","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/51/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":"3753802652","node_id":"PR_kwDOOaPssc66JH_l","number":75,"state":"closed","title":"Bump the python-packages group across 1 directory with 90 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-12T16:21:12.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-22T13:25:38.000Z","updated_at":"2026-01-12T16:21:14.000Z","time_to_close":1824934,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":90,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.0","repository_url":"https://github.com/django/asgiref"},{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"bcrypt","old_version":"4.3.0","new_version":"5.0.0","repository_url":"https://github.com/pyca/bcrypt"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.2","new_version":"6.2.4","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.4.26","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"chromadb","old_version":"1.0.8","new_version":"1.3.7","repository_url":"https://github.com/chroma-core/chroma"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastapi","old_version":"0.115.12","new_version":"0.127.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flatbuffers","old_version":"25.2.10","new_version":"25.12.19","repository_url":"https://github.com/google/flatbuffers"},{"name":"fsspec","old_version":"2025.3.2","new_version":"2025.12.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"google-auth","old_version":"2.40.0","new_version":"2.45.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"googleapis-common-protos","old_version":"1.70.0","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"htmldate","old_version":"1.9.3","new_version":"1.9.4","repository_url":"https://github.com/adbar/htmldate"},{"name":"httptools","old_version":"0.6.4","new_version":"0.7.1","repository_url":"https://github.com/MagicStack/httptools"},{"name":"huggingface-hub","old_version":"0.30.2","new_version":"1.2.3","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.7.0","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jiter","old_version":"0.9.0","new_version":"0.12.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.0","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"kubernetes","old_version":"32.0.1","new_version":"34.1.0","repository_url":"https://github.com/kubernetes-client/python"},{"name":"lxml","old_version":"5.4.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"lxml-html-clean","old_version":"0.4.2","new_version":"0.4.3","repository_url":"https://github.com/fedora-python/lxml_html_clean"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"networkx","old_version":"3.4.2","new_version":"3.6.1","repository_url":"https://github.com/networkx/networkx"},{"name":"numpy","old_version":"2.0.2","new_version":"2.4.0","repository_url":"https://github.com/numpy/numpy"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"onnxruntime","old_version":"1.21.0","new_version":"1.23.2","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"openai","old_version":"1.77.0","new_version":"2.14.0","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.32.1","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.32.1","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.32.1","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.53b1","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.53b1","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.53b1","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.32.1","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.32.1","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.53b1","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.53b1","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.10.18","new_version":"3.11.5","repository_url":"https://github.com/ijl/orjson"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"11.2.1","new_version":"12.0.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"posthog","old_version":"4.0.1","new_version":"7.4.2","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"6.30.2","new_version":"6.33.2","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic","old_version":"2.11.4","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.34.1","new_version":"2.41.5","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymupdf","old_version":"1.25.5","new_version":"1.26.7","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"regex","old_version":"2024.11.6","new_version":"2025.11.3","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.2.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.24.0","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.7.0","repository_url":"https://github.com/huggingface/safetensors"},{"name":"scikit-learn","old_version":"1.6.1","new_version":"1.8.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.15.2","new_version":"1.16.3","repository_url":"https://github.com/scipy/scipy"},{"name":"sentence-transformers","old_version":"4.1.0","new_version":"5.2.0","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.1","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"0.46.2","new_version":"0.50.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.12.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tld","old_version":"0.13","new_version":"0.13.1","repository_url":"https://github.com/barseghyanartur/tld"},{"name":"tokenizers","old_version":"0.21.1","new_version":"0.22.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.7.0","new_version":"2.9.1","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.51.3","new_version":"4.57.3","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.15.3","new_version":"0.20.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.0","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"tzdata","old_version":"2025.2","new_version":"2025.3","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.40.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"uvloop","old_version":"0.21.0","new_version":"0.22.1","repository_url":"https://github.com/MagicStack/uvloop"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 90 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.0` |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [bcrypt](https://github.com/pyca/bcrypt) | `4.3.0` | `5.0.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.2` | `6.2.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.8` | `1.3.7` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.12` | `0.127.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.1` |\n| [flatbuffers](https://github.com/google/flatbuffers) | `25.2.10` | `25.12.19` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.2` | `2025.12.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.0` | `2.45.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.70.0` | `1.72.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.76.0` |\n| [htmldate](https://github.com/adbar/htmldate) | `1.9.3` | `1.9.4` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.6.4` | `0.7.1` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `0.30.2` | `1.2.3` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.7.0` | `8.7.1` |\n| [jiter](https://github.com/pydantic/jiter) | `0.9.0` | `0.12.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.0` | `1.5.3` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `32.0.1` | `34.1.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.4.0` | `6.0.2` |\n| [lxml-html-clean](https://github.com/fedora-python/lxml_html_clean) | `0.4.2` | `0.4.3` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [networkx](https://github.com/networkx/networkx) | `3.4.2` | `3.6.1` |\n| [numpy](https://github.com/numpy/numpy) | `2.0.2` | `2.4.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.21.0` | `1.23.2` |\n| [openai](https://github.com/openai/openai-python) | `1.77.0` | `2.14.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.60b1` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.60b1` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.53b1` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.60b1` |\n| [orjson](https://github.com/ijl/orjson) | `3.10.18` | `3.11.5` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.0.0` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.0.1` | `7.4.2` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.30.2` | `6.33.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.12.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.34.1` | `2.41.5` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.5` | `1.26.7` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.2.1` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.11.6` | `2025.11.3` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.2.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.24.0` | `0.30.0` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.7.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.6.1` | `1.8.0` |\n| [scipy](https://github.com/scipy/scipy) | `1.15.2` | `1.16.3` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `4.1.0` | `5.2.0` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.1` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.50.0` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.12.0` |\n| [tld](https://github.com/barseghyanartur/tld) | `0.13` | `0.13.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.1` | `0.22.1` |\n| [torch](https://github.com/pytorch/pytorch) | `2.7.0` | `2.9.1` |\n| [transformers](https://github.com/huggingface/transformers) | `4.51.3` | `4.57.3` |\n| [typer](https://github.com/fastapi/typer) | `0.15.3` | `0.20.1` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.0` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.2` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.40.0` |\n| [uvloop](https://github.com/MagicStack/uvloop) | `0.21.0` | `0.22.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.12.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.12.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for asyncio's \u003ca href=\"https://docs.python.org/3/library/asyncio-graph.html\"\u003etask call graphs\u003c/a\u003e on Python 3.14 and later when using AnyIO's task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1025\"\u003e#1025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded an asynchronous implementation of the \u003ccode\u003efunctools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1001\"\u003e#1001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ewinloop\u003c/a\u003e implementation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/960\"\u003e#960\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for use as a context manager to \u003ccode\u003eanyio.lowlevel.RunVar\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1003\"\u003e#1003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e__all__\u003c/code\u003e declarations to public submodules (\u003ccode\u003eanyio.lowlevel\u003c/code\u003e etc.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1009\"\u003e#1009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to set the token count of a \u003ccode\u003eCapacityLimiter\u003c/code\u003e to zero (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1019\"\u003e#1019\u003c/a\u003e; requires Python 3.10 or later when using Trio)\u003c/li\u003e\n\u003cli\u003eAdded parameters \u003ccode\u003ecase_sensitive\u003c/code\u003e and \u003ccode\u003erecurse_symlinks\u003c/code\u003e along with support for path-like objects to \u003ccode\u003eanyio.Path.glob()\u003c/code\u003e and \u003ccode\u003eanyio.Path.rglob()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1033\"\u003e#1033\u003c/a\u003e; PR by \u003ca href=\"https://github.com/northisup\"\u003e\u003ccode\u003e@​northisup\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped \u003ccode\u003esniffio\u003c/code\u003e as a direct dependency and added the \u003ccode\u003eget_available_backends()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1021\"\u003e#1021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not raising \u003ccode\u003eClosedResourceError\u003c/code\u003e and \u003ccode\u003eBrokenResourceError\u003c/code\u003e on asyncio. Previously, a non-AnyIO exception was raised in such cases (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not checkpointing before writing data on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1002\"\u003e#1002\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a race condition where cancelling a \u003ccode\u003eFuture\u003c/code\u003e from \u003ccode\u003eBlockingPortal.start_task_soon()\u003c/code\u003e would sometimes not cancel the async function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1011\"\u003e#1011\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the presence of the pytest plugin causing breakage with older versions of pytest (\u0026lt;= 6.1.2) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1028\"\u003e#1028\u003c/a\u003e; PR by \u003ca href=\"https://github.com/saper\"\u003e\u003ccode\u003e@​saper\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a rarely occurring \u003ccode\u003eRuntimeError: Set changed size during iteration\u003c/code\u003e while shutting down the process pool when using the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/bc021b634291223d6829c0a689152173443a8545\"\u003e\u003ccode\u003ebc021b6\u003c/code\u003e\u003c/a\u003e Fixed the download-artifact settings to retain the expected behavior\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/c6000aa2837f75733f3c09c454f5a31eb9f9f536\"\u003e\u003ccode\u003ec6000aa\u003c/code\u003e\u003c/a\u003e Corrected the format of the version in the changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9d1bfe0da4261bcef3c10cd31218237805a89937\"\u003e\u003ccode\u003e9d1bfe0\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/77f7ce25e12c9becf5081105a47b1914e50a3e0a\"\u003e\u003ccode\u003e77f7ce2\u003c/code\u003e\u003c/a\u003e Fixed RuntimeError while shutting down the asyncio process pool (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aecc666e6b3b40f977ee715d141bdd89711b45cb\"\u003e\u003ccode\u003eaecc666\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/e5569adf98394dfabebccf215a04d05d7819b506\"\u003e\u003ccode\u003ee5569ad\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/dde3ab8583cb194e663f6fb87703a4a79e2701eb\"\u003e\u003ccode\u003edde3ab8\u003c/code\u003e\u003c/a\u003e Moved a changelog entry to its correct position\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/250d4f183245bf7ee5ead0ff39d521cda2b8d617\"\u003e\u003ccode\u003e250d4f1\u003c/code\u003e\u003c/a\u003e Restore compatibility with pytest\u0026lt;=6.1.2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3708e227838e2f51464900cf806b25c30ca458a7\"\u003e\u003ccode\u003e3708e22\u003c/code\u003e\u003c/a\u003e Fixed a typo in the documentation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9adbe08c55e725b0388dcc4ab7556875da881a4c\"\u003e\u003ccode\u003e9adbe08\u003c/code\u003e\u003c/a\u003e Add new params to Path.glob \u0026amp; Path.rglob introduced since 3.12 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.8.1 to 3.11.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/asgiref/blob/main/CHANGELOG.txt\"\u003easgiref's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.0 (2025-11-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esync_to_async\u003c/code\u003e gains a \u003ccode\u003econtext\u003c/code\u003e parameter, similar to those for\n\u003ccode\u003easyncio.create_task\u003c/code\u003e, \u003ccode\u003eTaskGroup\u003c/code\u003e \u0026amp;co, that can be used on Python 3.11+ to\ncontrol the context used by the underlying task.\u003c/p\u003e\n\u003cp\u003eThe parent context is already propagated by default but the additional\ncontrol is useful if multiple \u003ccode\u003esync_to_async\u003c/code\u003e calls need to share the same\ncontext, e.g. when used with \u003ccode\u003easyncio.gather()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.10.0 (2025-10-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded AsyncSingleThreadContext context manager to ensure multiple AsyncToSync\ninvocations use the same thread. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.2 (2025-09-23)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes wsgi.errors file descriptor in WsgiToAsgi adapter.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b7b15b20ddb51d1d8b6978165c0986686cd08c1d\"\u003e\u003ccode\u003eb7b15b2\u003c/code\u003e\u003c/a\u003e Releasing 3.11.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/901ee4f96db156f0b462690dd7c9f5aa99bcce03\"\u003e\u003ccode\u003e901ee4f\u003c/code\u003e\u003c/a\u003e Added a custom context parameter for the sync_to_async (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2138f0317d79cedd065571447ae0a7571989550e\"\u003e\u003ccode\u003e2138f03\u003c/code\u003e\u003c/a\u003e Fixed typo in test file comment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f587b122af17bdba5749c30b96d2237bc1c2dfdf\"\u003e\u003ccode\u003ef587b12\u003c/code\u003e\u003c/a\u003e Releasing 3.10.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b08087c3b6df811a0524585c4d4dafdc6b12c222\"\u003e\u003ccode\u003eb08087c\u003c/code\u003e\u003c/a\u003e Added AsyncSingleThreadContext (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/3471a0c09bd043d61c299308c0c8519ab6c0f774\"\u003e\u003ccode\u003e3471a0c\u003c/code\u003e\u003c/a\u003e Releasing 3.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/4f892bd261cee9afe51d67333e9bc7cd98b39a35\"\u003e\u003ccode\u003e4f892bd\u003c/code\u003e\u003c/a\u003e Remove Python 3.8 from tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/83cd6f3c6f59a66999446c2893cdb3fcae3c03c5\"\u003e\u003ccode\u003e83cd6f3\u003c/code\u003e\u003c/a\u003e Run CI against Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/796b9f14fd92d3131c7c39fab308ddd986d271eb\"\u003e\u003ccode\u003e796b9f1\u003c/code\u003e\u003c/a\u003e Fix incorrect Trailer header (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/29b108b0a9a5eddae3e282ba33915412a855e529\"\u003e\u003ccode\u003e29b108b\u003c/code\u003e\u003c/a\u003e Fixed \u003ca href=\"https://redirect.github.com/django/asgiref/issues/529\"\u003e#529\u003c/a\u003e: wsgi.errors should be a StringIO (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.11.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 `bcrypt` from 4.3.0 to 5.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/bcrypt/blob/main/CHANGELOG.rst\"\u003ebcrypt's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBumped MSRV to 1.74.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.14 and free-threaded Python 3.14.\u003c/li\u003e\n\u003cli\u003eAdded support for Windows on ARM.\u003c/li\u003e\n\u003cli\u003ePassing \u003ccode\u003ehashpw\u003c/code\u003e a password longer than 72 bytes now raises a\n\u003ccode\u003eValueError\u003c/code\u003e. Previously the password was silently truncated, following the\nbehavior of the original OpenBSD \u003ccode\u003ebcrypt\u003c/code\u003e implementation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/5060bce7e6c27f55e89d5b0d22b7ae0437a362f7\"\u003e\u003ccode\u003e5060bce\u003c/code\u003e\u003c/a\u003e 5.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e43f568265df7e1aabbaddccc336dbf3ea675df8\"\u003e\u003ccode\u003ee43f568\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.4 to 4.3.0 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1077\"\u003e#1077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/fc9f680a96a0d8e9df4c5a1a4d991fd961a90adb\"\u003e\u003ccode\u003efc9f680\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.175 to 0.2.176 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1075\"\u003e#1075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/633f46fbb33d8abfe5b9cb0c12eed79878fbff06\"\u003e\u003ccode\u003e633f46f\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1073\"\u003e#1073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/a2fefbbcff8d46cfd00efa8d2c13956b388d6bec\"\u003e\u003ccode\u003ea2fefbb\u003c/code\u003e\u003c/a\u003e Remove pypy310 builds (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/f60707e18f3f9728f2c6f4ce97fb8fc90721c7d3\"\u003e\u003ccode\u003ef60707e\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.5+wasi-0.2.4 to 0.14.7+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1071\"\u003e#1071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/c790eed8fa205403e1ea0587cf9178e866c940f3\"\u003e\u003ccode\u003ec790eed\u003c/code\u003e\u003c/a\u003e Bump unicode-ident from 1.0.18 to 1.0.19 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1070\"\u003e#1070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/122cbdc6895fd70c044a2f4ad7845c2a56b93096\"\u003e\u003ccode\u003e122cbdc\u003c/code\u003e\u003c/a\u003e Bump target-lexicon from 0.13.2 to 0.13.3 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1069\"\u003e#1069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/2bd208d6c5cadba2f983280ec21cc8cf977904d0\"\u003e\u003ccode\u003e2bd208d\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.4+wasi-0.2.4 to 0.14.5+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1068\"\u003e#1068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e1aa9e883090e0267bd7b38964fe852f70a99b88\"\u003e\u003ccode\u003ee1aa9e8\u003c/code\u003e\u003c/a\u003e remove poinless cargo cache paths from CI (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1067\"\u003e#1067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/bcrypt/compare/4.3.0...5.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beautifulsoup4` from 4.13.4 to 4.14.3\n\nUpdates `build` from 1.2.2.post1 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/pypa/build/releases\"\u003ebuild'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\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e, fixes issue \u003ca href=\"https://redirect.github.com/pypa/build/issues/900\"\u003e#900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/891\"\u003e#891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+ (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/861\"\u003e#861\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/738\"\u003e#738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/824\"\u003e#824\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/918\"\u003e#918\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/870\"\u003e#870\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/915\"\u003e#915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/862\"\u003e#862\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/899\"\u003e#899\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/896\"\u003e#896\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/842\"\u003e#842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/816\"\u003e#816\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/917\"\u003e#917\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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.3.0 (2025-08-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e\n(PR :pr:\u003ccode\u003e916\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8\n(PR :pr:\u003ccode\u003e891\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+\n(PR :pr:\u003ccode\u003e895\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed\n(PR :pr:\u003ccode\u003e898\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip\n(PR :pr:\u003ccode\u003e861\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn\n(PR :pr:\u003ccode\u003e892\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster\n(PR :pr:\u003ccode\u003e871\u003c/code\u003e, :pr:\u003ccode\u003e872\u003c/code\u003e, :pr:\u003ccode\u003e738\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv\n(PR :pr:\u003ccode\u003e911\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests\n(PR :pr:\u003ccode\u003e824\u003c/code\u003e, :pr:\u003ccode\u003e918\u003c/code\u003e, :pr:\u003ccode\u003e870\u003c/code\u003e, :pr:\u003ccode\u003e915\u003c/code\u003e, :pr:\u003ccode\u003e862\u003c/code\u003e, :pr:\u003ccode\u003e863\u003c/code\u003e, :pr:\u003ccode\u003e899\u003c/code\u003e, :pr:\u003ccode\u003e896\u003c/code\u003e, :pr:\u003ccode\u003e854\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata\n(PR :pr:\u003ccode\u003e914\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development\n(PR :pr:\u003ccode\u003e880\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs\n(PR :pr:\u003ccode\u003e842\u003c/code\u003e, :pr:\u003ccode\u003e816\u003c/code\u003e, :pr:\u003ccode\u003e917\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.2 (2024-09-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd editable to \u003ccode\u003ebuilder.get_requries_for_build\u003c/code\u003e's static types\n(PR :pr:\u003ccode\u003e764\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e763\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eInclude artifact attestations in our release\n(PR :pr:\u003ccode\u003e782\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix typing compatibility with typed \u003ccode\u003epyproject-hooks\u003c/code\u003e\n(PR :pr:\u003ccode\u003e788\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMark more tests with \u003ccode\u003enetwork\u003c/code\u003e\n(PR :pr:\u003ccode\u003e808\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more intersphinx links to docs\n(PR :pr:\u003ccode\u003e804\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003euv\u003c/code\u003e optional for tests\n(PR :pr:\u003ccode\u003e807\u003c/code\u003e and :pr:\u003ccode\u003e813\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.1 (2024-03-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid error when terminal width is undetectable on Python \u0026lt; 3.11\n(PR :pr:\u003ccode\u003e761\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/60e8752f69178d2b2c3563e9c8fa17aa6e11b12c\"\u003e\u003ccode\u003e60e8752\u003c/code\u003e\u003c/a\u003e chore: bump to 1.3.0 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/919\"\u003e#919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/807cfba618bc4f7b13e938ffa395fffd82494383\"\u003e\u003ccode\u003e807cfba\u003c/code\u003e\u003c/a\u003e feat: add --config-json (\u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bf54ad04ffe30e7f7847ea0bcbc081b550830950\"\u003e\u003ccode\u003ebf54ad0\u003c/code\u003e\u003c/a\u003e tests: fix issues with ignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/53852df8d84d1d17afaa851d4e1cc3754676bb29\"\u003e\u003ccode\u003e53852df\u003c/code\u003e\u003c/a\u003e docs: uv example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b983371befe0547b312aba36083b859d923d9bfc\"\u003e\u003ccode\u003eb983371\u003c/code\u003e\u003c/a\u003e tests: optional virtualenv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6cd157ad0b614a76a13374032a4f56b65048c0be\"\u003e\u003ccode\u003e6cd157a\u003c/code\u003e\u003c/a\u003e Adopt PEP 639 \u0026quot;license\u0026quot; field (\u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bdaea367438b8e5ed3c26a7497eafc007084fbec\"\u003e\u003ccode\u003ebdaea36\u003c/code\u003e\u003c/a\u003e tests: fixes for errors in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/14d6508679e2ddb4a511b4b41e972cb374e9dadb\"\u003e\u003ccode\u003e14d6508\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/59ac60e78e0dc5164355bd29eb99fb1cb2d7a59c\"\u003e\u003ccode\u003e59ac60e\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/48ebd63cd7049dff737093c462970262ae1ceed0\"\u003e\u003ccode\u003e48ebd63\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 5.5.2 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\u003ch1\u003ev6.2.1 (2025-10-12)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove documentation.\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.0 (2025-08-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove general \u003ccode\u003eRRCache\u003c/code\u003e performance by storing cache keys in an\nadditional sequence container.  Note that this will increase memory\nconsumption.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more unit tests.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.1.0 (2025-06-16)\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/v5.5.2...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.4.26 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.04.26...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.2 to 3.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\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\u003c/blockquote\u003e\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.2...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chromadb` from 1.0.8 to 1.3.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecli-1.2.4\u003c/h2\u003e\n\u003cp\u003eCLI release.\u003c/p\u003e\n\u003ch2\u003e1.3.6\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.3.6\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.3.6\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-12-10T05:26\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.3.6.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.3.6\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.3.6\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ENH] Use GCS with aws-sdk-go-v2 by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5878\"\u003echroma-core/chroma#5878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Refactor compactor into three chained orchestrators by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5831\"\u003echroma-core/chroma#5831\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Disable S3heap service and remove nonce-related logic by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5866\"\u003echroma-core/chroma#5866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Remove next_run from attached_functions by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5871\"\u003echroma-core/chroma#5871\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] - Update the README with correct logo by \u003ca href=\"https://github.com/tjkrusinskichroma\"\u003e\u003ccode\u003e@​tjkrusinskichroma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5888\"\u003echroma-core/chroma#5888\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Register package name for chroma-bm25 in js client, fix default-embed warning in getOrCreate by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5889\"\u003echroma-core/chroma#5889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add blank task support for ChromaCloudQwenEmbeddingFunction by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5874\"\u003echroma-core/chroma#5874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] update quota info for concurrent reads and writes per collection by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5875\"\u003echroma-core/chroma#5875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update error message returning to give back messages from server in js client by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5890\"\u003echroma-core/chroma#5890\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Make admission controlled client generic by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5883\"\u003echroma-core/chroma#5883\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Upgrade to foyer 0.20.1 to support multi-disk by \u003ca href=\"https://github.com/HammadB\"\u003e\u003ccode\u003e@​HammadB\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5887\"\u003echroma-core/chroma#5887\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Agentic Search Guide by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5881\"\u003echroma-core/chroma#5881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Modified AttachFunction to do 2PC on a new is_ready column by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5872\"\u003echroma-core/chroma#5872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Make wal3::Error::Internal log where it originates. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5891\"\u003echroma-core/chroma#5891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Let Chroma Cloud EFs get API key from client by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5892\"\u003echroma-core/chroma#5892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add getCollectionByCrn api support in js client by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5894\"\u003echroma-core/chroma#5894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] JS 3.1.6 by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5895\"\u003echroma-core/chroma#5895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Execute task with no backfill or incremental by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5867\"\u003echroma-core/chroma#5867\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Try shoe-horning sparse vector tokens into the metadata value. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5767\"\u003echroma-core/chroma#5767\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Make all functions incremental by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5893\"\u003echroma-core/chroma#5893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Take a suggestion from propel by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5901\"\u003echroma-core/chroma#5901\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Put both token id and token str in the statistics by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5777\"\u003echroma-core/chroma#5777\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Introduce backfill capabilities in compactor by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5896\"\u003echroma-core/chroma#5896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Persist a backfill record on log to trigger backfill by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5897\"\u003echroma-core/chroma#5897\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Refactor AttachedFunctionOrchestrator to return a FunctionContext instead of its individual fields by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5902\"\u003echroma-core/chroma#5902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add HTTP endpoint for get_attached_function by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5898\"\u003echroma-core/chroma#5898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add Python wrapper API for statistics function by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5899\"\u003echroma-core/chroma#5899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Add test_statistics_wrapper to CI by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5903\"\u003echroma-core/chroma#5903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] - Adds YouTube video to agentic search guide page by \u003ca href=\"https://github.com/tjkrusinskichroma\"\u003e\u003ccode\u003e@​tjkrusinskichroma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5905\"\u003echroma-core/chroma#5905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Sparse vector labels in python client by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5904\"\u003echroma-core/chroma#5904\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Fix test flake in test_task_api.py by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5907\"\u003echroma-core/chroma#5907\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Upgrade foyer to “7beb132de801e410bc751ecd0318c2a6d2ecd0d3” by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5912\"\u003echroma-core/chroma#5912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add k8s multidisk support by \u003ca href=\"https://github.com/HammadB\"\u003e\u003ccode\u003e@​HammadB\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5913\"\u003echroma-core/chroma#5913\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Make sure an input collection soft delete cascades to attached functions by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5908\"\u003echroma-core/chroma#5908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Fix authorization calls for functions API by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5915\"\u003echroma-core/chroma#5915\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Have stats function paginate through output collection by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5906\"\u003echroma-core/chroma#5906\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  wal3 Sometimes returns an \u0026quot;Internal\u0026quot; when it should return \u0026quot;LogContentionFailure\u0026quot; by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5916\"\u003echroma-core/chroma#5916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Document why it is a LogContentionFailure. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5920\"\u003echroma-core/chroma#5920\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/chroma-core/chroma/commit/a4e05b9df2342383ac395be8313b3e509ce725ea\"\u003e\u003ccode\u003ea4e05b9\u003c/code\u003e\u003c/a\u003e [RELEASE] CLI 1.2.4, Python 1.3.7, JS 3.1.8 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6032\"\u003e#6032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/b8a1b97380887580299cd099f9e933632bc204c3\"\u003e\u003ccode\u003eb8a1b97\u003c/code\u003e\u003c/a\u003e [ENH] Holiday edition CLI (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6028\"\u003e#6028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/d7d33fa73a587a81adfa43bf0c3754ba8ef6d933\"\u003e\u003ccode\u003ed7d33fa\u003c/code\u003e\u003c/a\u003e [ENH]  Add spanner emulator to the tilt config. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5987\"\u003e#5987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/f45ba4e73220604a226fc9dd1b5dfd8129dc34de\"\u003e\u003ccode\u003ef45ba4e\u003c/code\u003e\u003c/a\u003e [RELEASE] Rust client 0.9.0 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6025\"\u003e#6025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/6405042370d0c8984732174b8647a688bc667386\"\u003e\u003ccode\u003e6405042\u003c/code\u003e\u003c/a\u003e [ENH] Make RFE tiltfile config + values overridable (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6026\"\u003e#6026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/8c3eaed952ff91a48fd73ae9073ad4622997e9fc\"\u003e\u003ccode\u003e8c3eaed\u003c/code\u003e\u003c/a\u003e [ENH] Make it possible to deploy multiple chromas in Tiltfile (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5992\"\u003e#5992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/4295491011a051c0289d6bbbfdc546818c6b1bb9\"\u003e\u003ccode\u003e4295491\u003c/code\u003e\u003c/a\u003e [BUG]: Fix deadlock in orchestrator test (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6020\"\u003e#6020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/5df18a8297245c2242db8e710384be9532c4a762\"\u003e\u003ccode\u003e5df18a8\u003c/code\u003e\u003c/a\u003e [ENH] Reduce max backoff retry interval in wal3 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6019\"\u003e#6019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/09545d8277eddd6a6959ec7525b3e6f7c15b4c7c\"\u003e\u003ccode\u003e09545d8\u003c/code\u003e\u003c/a\u003e [ENH] Update error message tag in wal3 writer (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6017\"\u003e#6017\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/df6602421d06235182ab9a338c08b1f59711b3a3\"\u003e\u003ccode\u003edf66024\u003c/code\u003e\u003c/a\u003e [ENH] - Updates styling for code examples in light mode (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6002\"\u003e#6002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.8...1.3.7\"\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.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\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 regr...\n\n_Description has been truncated_","html_url":"https://github.com/Alvarz/google-gemini-rag/pull/75","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alvarz%2Fgoogle-gemini-rag/issues/75","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/75/packages"}],"issue_packages":[{"old_version":"1.8.0","new_version":"1.9.0","update_type":"minor","path":"/gateway","pr_created_at":"2026-05-17T20:22:22.000Z","version_change":"1.8.0 → 1.9.0","issue":{"uuid":"4464825372","node_id":"PR_kwDOSIAG287cb6Go","number":45,"state":"open","title":"chore(deps): bump the all group in /gateway with 5 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-17T20:22:22.000Z","updated_at":"2026-05-17T20:23:39.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"all","update_count":5,"packages":[{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"websockify","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/novnc/websockify"},{"name":"cryptography","old_version":"44.0.0","new_version":"48.0.0","repository_url":"https://github.com/pyca/cryptography"},{"name":"pymupdf","old_version":"1.25.3","new_version":"1.27.2.3","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-docx","old_version":"1.1.2","new_version":"1.2.0","repository_url":"https://github.com/python-openxml/python-docx"}],"path":"/gateway","ecosystem":"pip"},"body":"Bumps the all group in /gateway with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [websockify](https://github.com/novnc/websockify) | `0.12.0` | `0.13.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.0` | `48.0.0` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.3` | `1.27.2.3` |\n| [python-docx](https://github.com/python-openxml/python-docx) | `1.1.2` | `1.2.0` |\n\nUpdates `websocket-client` from 1.8.0 to 1.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e1.9.0\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6861ee417b65c183a81671bc57cace26c9c7ee29\"\u003e\u003ccode\u003e6861ee4\u003c/code\u003e\u003c/a\u003e Use ipaddress module for no_proxy parsing (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/729bdb8fc063397d298261ed6f2288f272b7f6de\"\u003e\u003ccode\u003e729bdb8\u003c/code\u003e\u003c/a\u003e Coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/f22579afed961d89a306d0018f373922bf567d22\"\u003e\u003ccode\u003ef22579a\u003c/code\u003e\u003c/a\u003e Linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/9564030bed1112497bf1c879673870419365a064\"\u003e\u003ccode\u003e9564030\u003c/code\u003e\u003c/a\u003e Change echo URL in docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/c0fe0f7a18867599c9b62fc61f71036a8d5bdfcf\"\u003e\u003ccode\u003ec0fe0f7\u003c/code\u003e\u003c/a\u003e apply black formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/813d570fc95114aa48e8ddf8b767390a1a6985f7\"\u003e\u003ccode\u003e813d570\u003c/code\u003e\u003c/a\u003e Resolve all mypy errors, with AI assistance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6020f37e784b77f6627b38797595f038aa76f26e\"\u003e\u003ccode\u003e6020f37\u003c/code\u003e\u003c/a\u003e black formatting fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.8.0...v1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `websockify` from 0.12.0 to 0.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/novnc/websockify/releases\"\u003ewebsockify's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.13.0\u003c/h2\u003e\n\u003ch1\u003eMajor Changes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python \u0026lt; 3.6 has been dropped.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://en.wikipedia.org/wiki/Server_Name_Indication\"\u003eSNI\u003c/a\u003e is enabled when connecting to an SSL target as an SSL client.\u003c/li\u003e\n\u003cli\u003eThe TokenRedis plugin handles namespaces.\u003c/li\u003e\n\u003cli\u003eHeaders are sanitized before being passed to authentication plugins.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/novnc/websockify/blob/master/CHANGES.txt\"\u003ewebsockify's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.13.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python \u0026lt; 3.6 has been dropped.\u003c/li\u003e\n\u003cli\u003eSNI is enabled when connecting to an SSL target as an SSL client.\u003c/li\u003e\n\u003cli\u003eThe TokenRedis plugin handles namespaces.\u003c/li\u003e\n\u003cli\u003eHeaders are sanitized before being passed to authentication plugins.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/e81894751365afc19fe64fc9d0e5c6fc52655c36\"\u003e\u003ccode\u003ee818947\u003c/code\u003e\u003c/a\u003e websockify 0.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/0d519b9c18139bcdee7f1bdb9dc785be26bdab29\"\u003e\u003ccode\u003e0d519b9\u003c/code\u003e\u003c/a\u003e Fix fake headers dict in tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/187e204ce403e7aac0ea67348eaad012a68f10bb\"\u003e\u003ccode\u003e187e204\u003c/code\u003e\u003c/a\u003e Clear out sensitive fake headers from client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/417210f2cf8db9cd3cd9d86c45ef954778176b0e\"\u003e\u003ccode\u003e417210f\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of \u003ca href=\"https://github.com/so-saf/websockify\"\u003ehttps://github.com/so-saf/websockify\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/245fd08e52604c76e877c94da1dc286f87c90c75\"\u003e\u003ccode\u003e245fd08\u003c/code\u003e\u003c/a\u003e Use standard line endings in sysloghandler.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/3f205f7cc6131368631c8b0cb17c3aa5689507e9\"\u003e\u003ccode\u003e3f205f7\u003c/code\u003e\u003c/a\u003e drop python\u0026lt;3.6 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/0af3404ec91ae827275af0a8e474add5afffaf81\"\u003e\u003ccode\u003e0af3404\u003c/code\u003e\u003c/a\u003e Add namespace value to TokenRedis source\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/5989d31ebf1a84bc6c6bdb7b32b4a9ea5437f36d\"\u003e\u003ccode\u003e5989d31\u003c/code\u003e\u003c/a\u003e Add namespace value to TokenRedis source\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/b6c02b13e3ce706dff6f96f754ef1682d9062258\"\u003e\u003ccode\u003eb6c02b1\u003c/code\u003e\u003c/a\u003e Include host in TLS setup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/f632fa0285181c1ff1a39c9c4b36795e3f6d9373\"\u003e\u003ccode\u003ef632fa0\u003c/code\u003e\u003c/a\u003e Use SSLContext.wrap_context() for SSL/TLS sockets\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/novnc/websockify/compare/v0.12.0...v0.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 44.0.0 to 48.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e48.0.0 - 2026-05-04\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for Python 3.8 has been removed.\n  ``cryptography`` now requires Python 3.9 or later.\n* **BACKWARDS INCOMPATIBLE:** Loading an X.509 CRL whose inner\n  ``TBSCertList.signature`` algorithm does not match the outer\n  ``signatureAlgorithm`` now raises ``ValueError``. Previously, such CRLs\n  were parsed successfully and only rejected during signature validation.\n* Added support for :doc:`/hazmat/primitives/asymmetric/mlkem` and\n  :doc:`/hazmat/primitives/asymmetric/mldsa` when using OpenSSL 3.5.0 or\n  later, in addition to the existing AWS-LC and BoringSSL support. This means\n  post-quantum algorithms are now available to users of our wheels.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Going forward, we do not guarantee that all functionality\u003cbr /\u003e\nin \u003ccode\u003ecryptography\u003c/code\u003e will be available when building against\u003cbr /\u003e\nOpenSSL. See :doc:\u003ccode\u003e/statements/state-of-openssl\u003c/code\u003e for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v47-0-0:\u003c/p\u003e\n\u003cp\u003e47.0.0 - 2026-04-24\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.8 is deprecated and will be removed in the next\n\u003ccode\u003ecryptography\u003c/code\u003e release.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for binary elliptic curves\n(\u003ccode\u003eSECT*\u003c/code\u003e classes) has been removed. These curves are rarely used and\nhave additional security considerations that make them undesirable.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for OpenSSL 1.1.x has been removed.\nOpenSSL 3.0.0 or later is now required. LibreSSL, BoringSSL, and AWS-LC\ncontinue to be supported.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Dropped support for LibreSSL \u0026lt; 4.1.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Loading keys with unsupported algorithms or\nkeys with unsupported explicit curve encodings now raises\n:class:\u003ccode\u003e~cryptography.exceptions.UnsupportedAlgorithm\u003c/code\u003e instead of\n\u003ccode\u003eValueError\u003c/code\u003e. This change affects\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_pem_private_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_der_private_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_pem_public_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_der_public_key\u003c/code\u003e,\nand :meth:\u003ccode\u003e~cryptography.x509.Certificate.public_key\u003c/code\u003e when called on\ncertificates with unsupported public key algorithms.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e When parsing elliptic curve private keys, we now\nreject keys that incorrectly encode a private key of the wrong length because\nsuch keys are impossible to process in a constant-time manner. We do not\nbelieve keys with this problem are in wide use, however we may revert this\nchange based on the feedback we receive.\u003c/li\u003e\n\u003cli\u003eDeprecated passing 64-bit (8-byte) and 128-bit (16-byte) keys to\n:class:\u003ccode\u003e~cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES\u003c/code\u003e. In a\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/8e03e30e3aae01632a697e903e3593c924f0139d\"\u003e\u003ccode\u003e8e03e30\u003c/code\u003e\u003c/a\u003e bump for 48.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14796\"\u003e#14796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/295e0d254ef31ab864730aa41312ec355416ee71\"\u003e\u003ccode\u003e295e0d2\u003c/code\u003e\u003c/a\u003e Add AGENTS.md with CLAUDE.md symlink (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14794\"\u003e#14794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/104a2de19e268a433e6da92be9cb872dcf0003c8\"\u003e\u003ccode\u003e104a2de\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14793\"\u003e#14793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/67ec1e51988195e17993d2edef5258b27509b926\"\u003e\u003ccode\u003e67ec1e5\u003c/code\u003e\u003c/a\u003e call check_length early on AesSiv::encrypt (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14792\"\u003e#14792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/b2da57a0d9e4bfd2b95364299091a18f74127b26\"\u003e\u003ccode\u003eb2da57a\u003c/code\u003e\u003c/a\u003e changelog for mldsa/mlkem for openssl (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14791\"\u003e#14791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/3cf44adee25c368d4a136e072fa9f80465d91eb0\"\u003e\u003ccode\u003e3cf44ad\u003c/code\u003e\u003c/a\u003e ML-KEM OpenSSL support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14781\"\u003e#14781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2e31639666766f846fbab2c605879db0fa64fe83\"\u003e\u003ccode\u003e2e31639\u003c/code\u003e\u003c/a\u003e ML-DSA OpenSSL support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14773\"\u003e#14773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/5affe5a286a986fdf512c4a5cb280d28a96c10e3\"\u003e\u003ccode\u003e5affe5a\u003c/code\u003e\u003c/a\u003e fix rust nightly clippy (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14790\"\u003e#14790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2e73ca448eaf64b6f0d4ffbb794cf96170cef5ec\"\u003e\u003ccode\u003e2e73ca4\u003c/code\u003e\u003c/a\u003e bump rust-openssl dep and update EcPoint::mul_generator to mul_generator2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/82ebd3b9f49d49ad5fd8b4b1f1dd02487b6e1466\"\u003e\u003ccode\u003e82ebd3b\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14785\"\u003e#14785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/44.0.0...48.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pymupdf` from 1.25.3 to 1.27.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pymupdf/pymupdf/releases\"\u003epymupdf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyMuPDF-1.27.2.3 released\u003c/h2\u003e\n\u003cp\u003eWheels for Windows, Linux and MacOS, and the sdist, are available on\n\u003ca href=\"https://pypi.org\"\u003ehttps://pypi.org\u003c/a\u003e and can be installed in the usual way, for example:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython -m pip install --upgrade pymupdf\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2.3\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4928\"\u003e#4928\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4942\"\u003e#4942\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4954\"\u003e#4954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4958\"\u003e#4958\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOther:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed incorrect generation of \u003ccode\u003elineJoin j\u003c/code\u003e in PDF content, introduced in 1.27.2.2.\u003c/li\u003e\n\u003cli\u003eAllow build to (incorrectly) claim to be thread-safe, for \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4760\"\u003e#4760\u003c/a\u003e. See setup.py for details.\u003c/li\u003e\n\u003cli\u003eUse pypi.org's pipcl package instead of our own pipcl.py file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePyMuPDF-1.27.2.2 released\u003c/h2\u003e\n\u003cp\u003eWheels for Windows, Linux and MacOS, and the sdist, are available on\n\u003ca href=\"https://pypi.org\"\u003ehttps://pypi.org\u003c/a\u003e and can be installed in the usual way, for example:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython -m pip install --upgrade pymupdf\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2.2\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4902\"\u003e#4902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4932\"\u003e#4932\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOther:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eAnnot.__bool__()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePyMuPDF-1.27.2 released\u003c/h2\u003e\n\u003cp\u003eWheels for Windows, Linux and MacOS, and the sdist, are available on \u003ca href=\"https://pypi.org\"\u003ehttps://pypi.org\u003c/a\u003e and can be installed in the usual way, for example:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython -m pip install --upgrade pymupdf\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2\u003c/strong\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pymupdf/PyMuPDF/blob/main/changes.txt\"\u003epymupdf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChange Log\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2.3\u003c/strong\u003e (2026-04-24)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4928 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4928\u0026gt;\u003c/code\u003e_: pymupdf.Document.scrub raises AttributeError for a document with annotations\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4942 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4942\u0026gt;\u003c/code\u003e_: bug: IndexError for Page.get_links after Page.clip_to_rect\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4954 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4954\u0026gt;\u003c/code\u003e_: get_drawings() returns incorrect lineJoin and width\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4958 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4958\u0026gt;\u003c/code\u003e_: bug: inserting rotated pages to another document messes up link coordinates\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOther:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed incorrect generation of \u003ccode\u003elineJoin j\u003c/code\u003e in PDF content, introduced in 1.27.2.2.\u003c/li\u003e\n\u003cli\u003eAllow build to (incorrectly) claim to be thread-safe, for \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4760\"\u003e#4760\u003c/a\u003e. See setup.py for details.\u003c/li\u003e\n\u003cli\u003eUse pypi.org's pipcl package instead of our own pipcl.py file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2.2\u003c/strong\u003e (2026-03-20)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4902 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4902\u0026gt;\u003c/code\u003e_: Incorrect linewidth in elements returned by Page.get_texttrace()\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4932 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4932\u0026gt;\u003c/code\u003e_: \u0026quot;Page\u0026quot; has no attribute \u0026quot;find_tables\u0026quot; in PyMuPDF 1.27\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOther:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eAnnot.__bool__()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2.\u003c/strong\u003e (2026-03-10)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUse MuPDF-1.27.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4903 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4903\u0026gt;\u003c/code\u003e_: Typing broken because of \u003ccode\u003e*_forward_decl\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOther:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRetrospectively marked \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4907\"\u003e#4907\u003c/a\u003e as fixed in pymupdf-1.27.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved \u003ccode\u003eget_textpage_ocr()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eFor partial OCR, \u003cstrong\u003eall\u003c/strong\u003e page areas outside legible text are now OCRed, not\njust those within images. This means that OCR will now also be performed\nfor vector graphics, and for text containing illegible characters.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProvide a Linux wheel for free-threading python,\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/bf51516c1b1146d357e3705473f7dea6a405a589\"\u003e\u003ccode\u003ebf51516\u003c/code\u003e\u003c/a\u003e Update version to 1.27.2.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/e5bddbbf4f4633ce2b6261f18ab6c9fb8a8bb857\"\u003e\u003ccode\u003ee5bddbb\u003c/code\u003e\u003c/a\u003e scripts/ tests/: updated to match new location of pipcl.py in src/.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/eda615d19e56ca9b7123b0030773fea3a3cf8dc6\"\u003e\u003ccode\u003eeda615d\u003c/code\u003e\u003c/a\u003e Move pipcl.py and wdev.py into src/.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/a7fe8b3683cda27684a5863a2de38e2b80165feb\"\u003e\u003ccode\u003ea7fe8b3\u003c/code\u003e\u003c/a\u003e changes.txt: updates for next release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/61da30ac418846be0b0a559ca407a3ad786f5d5f\"\u003e\u003ccode\u003e61da30a\u003c/code\u003e\u003c/a\u003e tests/test_drawings.py: New tests for \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4954\"\u003e#4954\u003c/a\u003e: test_4954_1() test_4954_2().\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/5445fc01c6edb3397df2768febddf4da9802d9ae\"\u003e\u003ccode\u003e5445fc0\u003c/code\u003e\u003c/a\u003e docs/conf.py: change how we look for version numbers in setup.py and scripts/...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/1792ef0da7f801865e79278d1644b31de96c50f5\"\u003e\u003ccode\u003e1792ef0\u003c/code\u003e\u003c/a\u003e pyproject.toml: require package pipcl for building.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/237f0976fa75fd010ab5d838dc1ce714d7cd87ce\"\u003e\u003ccode\u003e237f097\u003c/code\u003e\u003c/a\u003e tests/: fix tests if we are incorrectly claiming to be thread safe.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/cd89bb04ee92c6e1f831bb5ae6d84ddd296987e4\"\u003e\u003ccode\u003ecd89bb0\u003c/code\u003e\u003c/a\u003e tests/conftest.py: also install pipcl, as we move to using pipcl package.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/341eab2d3b10a03cdd34b64a6acaeb38f43e8d9b\"\u003e\u003ccode\u003e341eab2\u003c/code\u003e\u003c/a\u003e setup.py: added support for incorrectly claiming to be thread-safe, for \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4760\"\u003e#4760\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pymupdf/pymupdf/compare/1.25.3...1.27.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-docx` from 1.1.2 to 1.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-openxml/python-docx/blob/master/HISTORY.rst\"\u003epython-docx's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.2.0 (2025-06-16)\n++++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for comments\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8, add testing for Python 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/e45454602b53e8e572b179ccf1c91093ec9f4ed7\"\u003e\u003ccode\u003ee454546\u003c/code\u003e\u003c/a\u003e release: prepare v1.2.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/1fe660198aab18a421c95d019f53b2aa22d2fe2f\"\u003e\u003ccode\u003e1fe6601\u003c/code\u003e\u003c/a\u003e build: small adjustments for tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/4fbe1f684e08aa7eebb0ce6bfedfce512b5c95a2\"\u003e\u003ccode\u003e4fbe1f6\u003c/code\u003e\u003c/a\u003e docs: add Comments docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/a809d6cc8aec18648850d8b94d554f05621e433a\"\u003e\u003ccode\u003ea809d6c\u003c/code\u003e\u003c/a\u003e comments: add Comment.text\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/e3a321d26195fdd6e368f59b63be06b1277dac14\"\u003e\u003ccode\u003ee3a321d\u003c/code\u003e\u003c/a\u003e comments: add Run.mark_comment_range()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/af3b973dd2c938f6851537978fe76f4f5e91dcc9\"\u003e\u003ccode\u003eaf3b973\u003c/code\u003e\u003c/a\u003e comments: add Document.add_comment()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/66da52204db395466cc7ea033af0f5bffd228953\"\u003e\u003ccode\u003e66da522\u003c/code\u003e\u003c/a\u003e xfail: acceptance test for Document.add_comment()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/761f4ccd7751afeeaa5fff5c6f47325c3e0970fa\"\u003e\u003ccode\u003e761f4cc\u003c/code\u003e\u003c/a\u003e comments: add Comment.author, .initials setters\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/8ac9fc4f6b50b9b7f208974e853f1995d63a834a\"\u003e\u003ccode\u003e8ac9fc4\u003c/code\u003e\u003c/a\u003e comments: add Comments.add_comment()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/d360409273a9fdfd2d6a26a7f35b8f3bfc781f04\"\u003e\u003ccode\u003ed360409\u003c/code\u003e\u003c/a\u003e xfail: acceptance test for Comment mutations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-openxml/python-docx/compare/v1.1.2...v1.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/yourhq/yourhq/pull/45","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/yourhq%2Fyourhq/issues/45","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/45/packages"}},{"old_version":"\u003e=1.6.0","new_version":"\u003e=1.9.0","update_type":"minor","path":"/survey-cli","pr_created_at":"2026-05-13T08:08:50.000Z","version_change":"\u003e=1.6.0 → \u003e=1.9.0","issue":{"uuid":"4436075183","node_id":"PR_kwDOSQYphM7bBX80","number":206,"state":"open","title":"deps(survey-cli)(deps): update websocket-client requirement from \u003e=1.6.0 to \u003e=1.9.0 in /survey-cli","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-13T08:08:50.000Z","updated_at":"2026-05-13T08:08:51.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(survey-cli)(deps): update","packages":[{"name":"websocket-client","old_version":"\u003e=1.6.0","new_version":"\u003e=1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":"/survey-cli","ecosystem":"pip"},"body":"Updates the requirements on [websocket-client](https://github.com/websocket-client/websocket-client) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.8.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eon_reconnect\u003c/code\u003e parameter to WebSocketApp to handle callback ambiguity (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove handling of SSLEOFError and use reconnect bool (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor linting and docs CI build upgrades (981c00e, 75ba91a, bec2608)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.7.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRenamed \u003ccode\u003emask\u003c/code\u003e variable in ABNF to prevent name collision with \u003ccode\u003emask()\u003c/code\u003e function (9b51f73)\u003c/li\u003e\n\u003cli\u003eFixed old http import of HTTPStatus in _handshake.py (9b51f73)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esend_text()\u003c/code\u003e and \u003ccode\u003esend_bytes()\u003c/code\u003e to _app.py (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved typehint support (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e, 9b51f73, 8b73d00)\u003c/li\u003e\n\u003cli\u003eGeneral readability improvements, made all string concatenations use f-strings (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/909\"\u003e#909\u003c/a\u003e, 780584f, 3eabc6e)\u003c/li\u003e\n\u003cli\u003eApplied black formatting style to code (da7f286)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.4\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/952\"\u003e#952\u003c/a\u003e, add support for HTTP 307 and 308 redirect codes (69468ad)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix type hints issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/949\"\u003e#949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Python beta release 3.12 in CI (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/946\"\u003e#946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd maintainer email in setup.py (3d464fc)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for SSLKEYLOGFILE environment variable (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/943\"\u003e#943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for callable header arguments (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/932\"\u003e#932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChange handling of proxy environment variables, is_secure set to true now prevents http_proxy from getting used (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/929\"\u003e#929\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Dispatcher keyboard interrupt. Should solve reconnect loop with rel (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/924\"\u003e#924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix teardown issue when ping thread is not properly ended (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/918\"\u003e#918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix double ping wait time on first ping (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/912\"\u003e#912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor type hints improvements (eda6724, 54b3013)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.5.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logic to avoid error in the case where content-length header does not exist, bug introduced in 1.5.2 (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix wsdump.py script typing, bug introduced in 1.5.2 (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6861ee417b65c183a81671bc57cace26c9c7ee29\"\u003e\u003ccode\u003e6861ee4\u003c/code\u003e\u003c/a\u003e Use ipaddress module for no_proxy parsing (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/729bdb8fc063397d298261ed6f2288f272b7f6de\"\u003e\u003ccode\u003e729bdb8\u003c/code\u003e\u003c/a\u003e Coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/f22579afed961d89a306d0018f373922bf567d22\"\u003e\u003ccode\u003ef22579a\u003c/code\u003e\u003c/a\u003e Linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/9564030bed1112497bf1c879673870419365a064\"\u003e\u003ccode\u003e9564030\u003c/code\u003e\u003c/a\u003e Change echo URL in docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/c0fe0f7a18867599c9b62fc61f71036a8d5bdfcf\"\u003e\u003ccode\u003ec0fe0f7\u003c/code\u003e\u003c/a\u003e apply black formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/813d570fc95114aa48e8ddf8b767390a1a6985f7\"\u003e\u003ccode\u003e813d570\u003c/code\u003e\u003c/a\u003e Resolve all mypy errors, with AI assistance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6020f37e784b77f6627b38797595f038aa76f26e\"\u003e\u003ccode\u003e6020f37\u003c/code\u003e\u003c/a\u003e black formatting fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.6.0...v1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/SIN-CLIs/stealth-runner/pull/206","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SIN-CLIs%2Fstealth-runner/issues/206","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/206/packages"}},{"old_version":"\u003e=1.7.0","new_version":"\u003e=1.9.0","update_type":"minor","path":null,"pr_created_at":"2026-05-11T23:42:13.000Z","version_change":"\u003e=1.7.0 → \u003e=1.9.0","issue":{"uuid":"4425082122","node_id":"PR_kwDOSazcLc7adyXe","number":7,"state":"open","title":"Update websocket-client requirement from \u003e=1.7.0 to \u003e=1.9.0","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-11T23:42:13.000Z","updated_at":"2026-05-11T23:42:17.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"websocket-client","old_version":"\u003e=1.7.0","new_version":"\u003e=1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [websocket-client](https://github.com/websocket-client/websocket-client) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.8.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eon_reconnect\u003c/code\u003e parameter to WebSocketApp to handle callback ambiguity (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove handling of SSLEOFError and use reconnect bool (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor linting and docs CI build upgrades (981c00e, 75ba91a, bec2608)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.7.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRenamed \u003ccode\u003emask\u003c/code\u003e variable in ABNF to prevent name collision with \u003ccode\u003emask()\u003c/code\u003e function (9b51f73)\u003c/li\u003e\n\u003cli\u003eFixed old http import of HTTPStatus in _handshake.py (9b51f73)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esend_text()\u003c/code\u003e and \u003ccode\u003esend_bytes()\u003c/code\u003e to _app.py (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved typehint support (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e, 9b51f73, 8b73d00)\u003c/li\u003e\n\u003cli\u003eGeneral readability improvements, made all string concatenations use f-strings (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/909\"\u003e#909\u003c/a\u003e, 780584f, 3eabc6e)\u003c/li\u003e\n\u003cli\u003eApplied black formatting style to code (da7f286)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.4\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/952\"\u003e#952\u003c/a\u003e, add support for HTTP 307 and 308 redirect codes (69468ad)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix type hints issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/949\"\u003e#949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Python beta release 3.12 in CI (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/946\"\u003e#946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd maintainer email in setup.py (3d464fc)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for SSLKEYLOGFILE environment variable (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/943\"\u003e#943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for callable header arguments (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/932\"\u003e#932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChange handling of proxy environment variables, is_secure set to true now prevents http_proxy from getting used (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/929\"\u003e#929\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Dispatcher keyboard interrupt. Should solve reconnect loop with rel (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/924\"\u003e#924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix teardown issue when ping thread is not properly ended (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/918\"\u003e#918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix double ping wait time on first ping (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/912\"\u003e#912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor type hints improvements (eda6724, 54b3013)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.5.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logic to avoid error in the case where content-length header does not exist, bug introduced in 1.5.2 (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix wsdump.py script typing, bug introduced in 1.5.2 (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6861ee417b65c183a81671bc57cace26c9c7ee29\"\u003e\u003ccode\u003e6861ee4\u003c/code\u003e\u003c/a\u003e Use ipaddress module for no_proxy parsing (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/729bdb8fc063397d298261ed6f2288f272b7f6de\"\u003e\u003ccode\u003e729bdb8\u003c/code\u003e\u003c/a\u003e Coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/f22579afed961d89a306d0018f373922bf567d22\"\u003e\u003ccode\u003ef22579a\u003c/code\u003e\u003c/a\u003e Linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/9564030bed1112497bf1c879673870419365a064\"\u003e\u003ccode\u003e9564030\u003c/code\u003e\u003c/a\u003e Change echo URL in docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/c0fe0f7a18867599c9b62fc61f71036a8d5bdfcf\"\u003e\u003ccode\u003ec0fe0f7\u003c/code\u003e\u003c/a\u003e apply black formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/813d570fc95114aa48e8ddf8b767390a1a6985f7\"\u003e\u003ccode\u003e813d570\u003c/code\u003e\u003c/a\u003e Resolve all mypy errors, with AI assistance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6020f37e784b77f6627b38797595f038aa76f26e\"\u003e\u003ccode\u003e6020f37\u003c/code\u003e\u003c/a\u003e black formatting fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.7.0...v1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/mdshoebkhanking/shell-ai-os-controller/pull/7","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdshoebkhanking%2Fshell-ai-os-controller/issues/7","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/7/packages"}},{"old_version":"!=0.40.0,!=0.41.*,!=0.42.*,\u003e=0.32.0","new_version":"!=0.40.0,!=0.41.0.dev,!=0.42.0.dev,\u003e=1.9.0","update_type":null,"path":null,"pr_created_at":"2026-04-24T02:02:55.000Z","version_change":"!=0.40.0,!=0.41.*,!=0.42.*,\u003e=0.32.0 → !=0.40.0,!=0.41.0.dev,!=0.42.0.dev,\u003e=1.9.0","issue":{"uuid":"4320011332","node_id":"PR_kwDOBFHcf87VLpyR","number":2544,"state":"closed","title":"Update websocket-client requirement from !=0.40.0,!=0.41.*,!=0.42.*,\u003e=0.32.0 to !=0.40.0,!=0.41.0.dev,!=0.42.0.dev,\u003e=1.9.0","user":"dependabot[bot]","labels":["cncf-cla: yes","size/XS","do-not-merge/release-note-label-needed","needs-kind","dependencies","python"],"assignees":[],"locked":false,"comments_count":7,"pull_request":true,"closed_at":"2026-05-07T21:40:47.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-24T02:02:55.000Z","updated_at":"2026-05-07T21:40:58.000Z","time_to_close":1193872,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"websocket-client","old_version":"!=0.40.0,!=0.41.*,!=0.42.*,\u003e=0.32.0","new_version":"!=0.40.0,!=0.41.0.dev,!=0.42.0.dev,\u003e=1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [websocket-client](https://github.com/websocket-client/websocket-client) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.8.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eon_reconnect\u003c/code\u003e parameter to WebSocketApp to handle callback ambiguity (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove handling of SSLEOFError and use reconnect bool (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor linting and docs CI build upgrades (981c00e, 75ba91a, bec2608)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.7.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRenamed \u003ccode\u003emask\u003c/code\u003e variable in ABNF to prevent name collision with \u003ccode\u003emask()\u003c/code\u003e function (9b51f73)\u003c/li\u003e\n\u003cli\u003eFixed old http import of HTTPStatus in _handshake.py (9b51f73)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esend_text()\u003c/code\u003e and \u003ccode\u003esend_bytes()\u003c/code\u003e to _app.py (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved typehint support (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e, 9b51f73, 8b73d00)\u003c/li\u003e\n\u003cli\u003eGeneral readability improvements, made all string concatenations use f-strings (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/909\"\u003e#909\u003c/a\u003e, 780584f, 3eabc6e)\u003c/li\u003e\n\u003cli\u003eApplied black formatting style to code (da7f286)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.4\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/952\"\u003e#952\u003c/a\u003e, add support for HTTP 307 and 308 redirect codes (69468ad)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix type hints issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/949\"\u003e#949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Python beta release 3.12 in CI (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/946\"\u003e#946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd maintainer email in setup.py (3d464fc)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for SSLKEYLOGFILE environment variable (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/943\"\u003e#943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for callable header arguments (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/932\"\u003e#932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChange handling of proxy environment variables, is_secure set to true now prevents http_proxy from getting used (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/929\"\u003e#929\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Dispatcher keyboard interrupt. Should solve reconnect loop with rel (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/924\"\u003e#924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix teardown issue when ping thread is not properly ended (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/918\"\u003e#918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix double ping wait time on first ping (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/912\"\u003e#912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor type hints improvements (eda6724, 54b3013)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.5.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logic to avoid error in the case where content-length header does not exist, bug introduced in 1.5.2 (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix wsdump.py script typing, bug introduced in 1.5.2 (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6861ee417b65c183a81671bc57cace26c9c7ee29\"\u003e\u003ccode\u003e6861ee4\u003c/code\u003e\u003c/a\u003e Use ipaddress module for no_proxy parsing (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/729bdb8fc063397d298261ed6f2288f272b7f6de\"\u003e\u003ccode\u003e729bdb8\u003c/code\u003e\u003c/a\u003e Coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/f22579afed961d89a306d0018f373922bf567d22\"\u003e\u003ccode\u003ef22579a\u003c/code\u003e\u003c/a\u003e Linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/9564030bed1112497bf1c879673870419365a064\"\u003e\u003ccode\u003e9564030\u003c/code\u003e\u003c/a\u003e Change echo URL in docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/c0fe0f7a18867599c9b62fc61f71036a8d5bdfcf\"\u003e\u003ccode\u003ec0fe0f7\u003c/code\u003e\u003c/a\u003e apply black formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/813d570fc95114aa48e8ddf8b767390a1a6985f7\"\u003e\u003ccode\u003e813d570\u003c/code\u003e\u003c/a\u003e Resolve all mypy errors, with AI assistance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6020f37e784b77f6627b38797595f038aa76f26e\"\u003e\u003ccode\u003e6020f37\u003c/code\u003e\u003c/a\u003e black formatting fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v0.32.0...v1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/kubernetes-client/python/pull/2544","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubernetes-client%2Fpython/issues/2544","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2544/packages"}},{"old_version":"1.8.0","new_version":"1.9.0","update_type":"minor","path":null,"pr_created_at":"2026-04-20T00:12:06.000Z","version_change":"1.8.0 → 1.9.0","issue":{"uuid":"4292395519","node_id":"PR_kwDOOicRes7TyEpI","number":15,"state":"closed","title":"Bump the dev-dependencies group across 1 directory with 2 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-11T00:14:29.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-20T00:12:06.000Z","updated_at":"2026-05-11T00:14:31.000Z","time_to_close":1814543,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dev-dependencies","update_count":2,"packages":[{"name":"redis","old_version":"6.1.0","new_version":"7.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev-dependencies group with 2 updates in the / directory: [redis](https://github.com/redis/redis-py) and [websocket-client](https://github.com/websocket-client/websocket-client).\n\nUpdates `redis` from 6.1.0 to 7.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\u003e7.4.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix AttributeError in cluster metrics recording when connection is None or ClusterNode object instance is used to extract the connection info (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3999\"\u003e#3999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing security concern in \u003cstrong\u003erepr\u003c/strong\u003e methods for ConnectionPools - passwords might leak in plain text logs (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3998\"\u003e#3998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefactored connection count and SCH metric collection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4001\"\u003e#4001\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧪 Experimental Features\u003c/h2\u003e\n\u003cp\u003e-Refactored health check logic for MultiDBClient (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3994\"\u003e#3994\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eExpose basic Otel classes and functions to be importable through redis.observability to match the examples in the readthedocs (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3996\"\u003e#3996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.3.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eOpenTelemetry Native Metrics Support for asynchronous clients\u003c/strong\u003e\nAdded comprehensive OpenTelemetry metrics support for asynchronous clients following the \u003ca href=\"https://opentelemetry.io/docs/specs/semconv/database/database-metrics/\"\u003eOpenTelemetry Database Client Semantic Conventions\u003c/a\u003e.\nMetric groups include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommand metrics: Operation duration with retry tracking\u003c/li\u003e\n\u003cli\u003eConnection basic: Connection count and creation time\u003c/li\u003e\n\u003cli\u003eResiliency: Errors, handoffs, timeout relaxation\u003c/li\u003e\n\u003cli\u003eConnection advanced: Wait time and use time\u003c/li\u003e\n\u003cli\u003ePubsub metrics: Published and received messages\u003c/li\u003e\n\u003cli\u003eStream metrics: Processing duration and maintenance notifications\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded OTel instrumentation and metrics export for async client (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3977\"\u003e#3977\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[async] Adding access to cluster client's nodes_manager and set_response_callback in ClusterPipeline objects (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3989\"\u003e#3989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(connection): Ensure we have an initialized protocol in connection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3981\"\u003e#3981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use KeysT for blpop and brpop keys parameter type annotation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3987\"\u003e#3987\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3985\"\u003e#3985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: replace 3 bare except clauses with except Exception (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3980\"\u003e#3980\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/mitre88\"\u003e\u003ccode\u003e@​mitre88\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/turanalmammadov\"\u003e\u003ccode\u003e@​turanalmammadov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/haosenwang1018\"\u003e\u003ccode\u003e@​haosenwang1018\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Medno\"\u003e\u003ccode\u003e@​Medno\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.2.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/b72f24ad6a2226d46aed770e18094a86117d2217\"\u003e\u003ccode\u003eb72f24a\u003c/code\u003e\u003c/a\u003e Updating lib version to 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/0a4e0afe36504c3fb6df1e38683ea946febac9d3\"\u003e\u003ccode\u003e0a4e0af\u003c/code\u003e\u003c/a\u003e Refactored health check logic for MultiDBClient (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3994\"\u003e#3994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/15492c9156d3ab8dce05360977480510cf24fbf9\"\u003e\u003ccode\u003e15492c9\u003c/code\u003e\u003c/a\u003e Refactored connection count and SCH metric collection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4001\"\u003e#4001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/cd964ac96649df872a051835e9a52e05a5090607\"\u003e\u003ccode\u003ecd964ac\u003c/code\u003e\u003c/a\u003e Expose basic Otel classes and funtions to be importable through redis.observa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/46ab74d02ed9b15176f67edb817de83524f8145a\"\u003e\u003ccode\u003e46ab74d\u003c/code\u003e\u003c/a\u003e Fixing security concern in \u003cstrong\u003erepr\u003c/strong\u003e methods for ConnectionPools - passwords m...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/26482dbaae38abdb1966d9b1c803331e2dab2053\"\u003e\u003ccode\u003e26482db\u003c/code\u003e\u003c/a\u003e Fix AttributeError in cluster metrics recording when connection is None or Cl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/8ecbc7a728792ab9c71078cb330a64c225cb3351\"\u003e\u003ccode\u003e8ecbc7a\u003c/code\u003e\u003c/a\u003e Updating lib version to 7.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/11043df86ed5f892cde1f34f08f3450f13bb6339\"\u003e\u003ccode\u003e11043df\u003c/code\u003e\u003c/a\u003e typing: accept single-key input for blpop and brpop (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d9581250202123ebf68d299e8f2ea79fa9bd7210\"\u003e\u003ccode\u003ed958125\u003c/code\u003e\u003c/a\u003e fix: use KeysT for blpop and brpop keys parameter type annotation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3987\"\u003e#3987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/75bf91b8a28bfc3f8417e58d1b78bd112ffcf6de\"\u003e\u003ccode\u003e75bf91b\u003c/code\u003e\u003c/a\u003e [async] Adding access to cluster client's nodes_manager and set_response_call...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v6.1.0...v7.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `websocket-client` from 1.8.0 to 1.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e1.9.0\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6861ee417b65c183a81671bc57cace26c9c7ee29\"\u003e\u003ccode\u003e6861ee4\u003c/code\u003e\u003c/a\u003e Use ipaddress module for no_proxy parsing (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/729bdb8fc063397d298261ed6f2288f272b7f6de\"\u003e\u003ccode\u003e729bdb8\u003c/code\u003e\u003c/a\u003e Coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/f22579afed961d89a306d0018f373922bf567d22\"\u003e\u003ccode\u003ef22579a\u003c/code\u003e\u003c/a\u003e Linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/9564030bed1112497bf1c879673870419365a064\"\u003e\u003ccode\u003e9564030\u003c/code\u003e\u003c/a\u003e Change echo URL in docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/c0fe0f7a18867599c9b62fc61f71036a8d5bdfcf\"\u003e\u003ccode\u003ec0fe0f7\u003c/code\u003e\u003c/a\u003e apply black formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/813d570fc95114aa48e8ddf8b767390a1a6985f7\"\u003e\u003ccode\u003e813d570\u003c/code\u003e\u003c/a\u003e Resolve all mypy errors, with AI assistance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6020f37e784b77f6627b38797595f038aa76f26e\"\u003e\u003ccode\u003e6020f37\u003c/code\u003e\u003c/a\u003e black formatting fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.8.0...v1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\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/stan-dot/blue-histogramming/pull/15","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/stan-dot%2Fblue-histogramming/issues/15","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15/packages"}},{"old_version":"1.8.0","new_version":"1.9.0","update_type":"minor","path":null,"pr_created_at":"2026-03-01T14:07:17.000Z","version_change":"1.8.0 → 1.9.0","issue":{"uuid":"4007288546","node_id":"PR_kwDOFhigTs7HIY01","number":494,"state":"closed","title":"Bump the core-scripts group across 1 directory with 21 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-03-10T18:28:13.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-01T14:07:17.000Z","updated_at":"2026-03-10T18:28:15.000Z","time_to_close":793256,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"core-scripts","update_count":21,"packages":[{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"certifi","old_version":"2025.8.3","new_version":"2026.2.25","repository_url":"https://github.com/certifi/python-certifi"},{"name":"chardet","old_version":"5.2.0","new_version":"6.0.0.post1","repository_url":"https://github.com/chardet/chardet"},{"name":"environs","old_version":"14.3.0","new_version":"14.6.0","repository_url":"https://github.com/sloria/environs"},{"name":"execnet","old_version":"2.1.1","new_version":"2.1.2","repository_url":"https://github.com/pytest-dev/execnet"},{"name":"gitpython","old_version":"3.1.45","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"parse","old_version":"1.20.2","new_version":"1.21.1","repository_url":"https://github.com/r1chardj0n3s/parse"},{"name":"parse-type","old_version":"0.6.4","new_version":"0.6.6","repository_url":"https://github.com/jenisys/parse_type"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.2","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pygithub","old_version":"2.7.0","new_version":"2.8.1","repository_url":"https://github.com/pygithub/pygithub"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pytest","old_version":"8.4.1","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"responses","old_version":"0.25.7","new_version":"0.26.0","repository_url":"https://github.com/getsentry/responses"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"behave","old_version":"1.3.0","new_version":"1.3.3","repository_url":"https://github.com/behave/behave"}],"path":null,"ecosystem":"pip"},"body":"Bumps the core-scripts group with 21 updates in the /scripts directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.8.3` | `2026.2.25` |\n| [chardet](https://github.com/chardet/chardet) | `5.2.0` | `6.0.0.post1` |\n| [environs](https://github.com/sloria/environs) | `14.3.0` | `14.6.0` |\n| [execnet](https://github.com/pytest-dev/execnet) | `2.1.1` | `2.1.2` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.45` | `3.1.46` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [parse](https://github.com/r1chardj0n3s/parse) | `1.20.2` | `1.21.1` |\n| [parse-type](https://github.com/jenisys/parse_type) | `0.6.4` | `0.6.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.7.0` | `2.8.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `9.0.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [responses](https://github.com/getsentry/responses) | `0.25.7` | `0.26.0` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [behave](https://github.com/behave/behave) | `1.3.0` | `1.3.3` |\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 `certifi` from 2025.8.3 to 2026.2.25\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/8571a4ba5205675107f9026d0008ad2d7a2778bf\"\u003e\u003ccode\u003e8571a4b\u003c/code\u003e\u003c/a\u003e 2026.02.25 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/395\"\u003e#395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6f7de00579d292af565bbb8a947643219794eb6d\"\u003e\u003ccode\u003e6f7de00\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 8.0.0 to 8.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/390\"\u003e#390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a1de59b15105cad768afed4f066b36171134f04a\"\u003e\u003ccode\u003ea1de59b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.1 to 6.0.2 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/7f5ade5d8da615fd366e8de6a668271251c45d34\"\u003e\u003ccode\u003e7f5ade5\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.1.0 to 6.2.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/392\"\u003e#392\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c64d9f3a8496c0195548697f2080e716af66dd6a\"\u003e\u003ccode\u003ec64d9f3\u003c/code\u003e\u003c/a\u003e 2026.01.04 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/389\"\u003e#389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4ac232f05a547071543d2fb069aa3c62b1dc79f3\"\u003e\u003ccode\u003e4ac232f\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/95ae4b20e8abb7fa708e751e346466d16b36211a\"\u003e\u003ccode\u003e95ae4b2\u003c/code\u003e\u003c/a\u003e Update CI workflow to use Ubuntu 24.04 and Python 3.14 stable (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/b72a7b1a40ae20755338d3132d8f880427b3b6fc\"\u003e\u003ccode\u003eb72a7b1\u003c/code\u003e\u003c/a\u003e Bump dessant/lock-threads from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ecc267216fbdcecb1b2aa2aa175152b773cc5ced\"\u003e\u003ccode\u003eecc2672\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6a897dbc1124b17f179ef225742fcda481ec96f3\"\u003e\u003ccode\u003e6a897db\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.11 to 8.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/383\"\u003e#383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.08.03...2026.02.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chardet` from 5.2.0 to 6.0.0.post1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chardet/chardet/releases\"\u003echardet's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.0.post1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed version number in chardet/version.py still being set to \u003ccode\u003e6.0.0dev0\u003c/code\u003e. Otherwise identical to \u003ca href=\"https://github.com/chardet/chardet/releases/6.0.0\"\u003e6.0.0\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.0.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eUnified single-byte charset detection\u003c/strong\u003e: Instead of only having trained language models for a handful of languages (Bulgarian, Greek, Hebrew, Hungarian, Russian, Thai, Turkish) and relying on special-case \u003ccode\u003eLatin1Prober\u003c/code\u003e and \u003ccode\u003eMacRomanProber\u003c/code\u003e heuristics for Western encodings, chardet now treats all single-byte charsets the same way: every encoding gets proper language-specific bigram models trained on CulturaX corpus data. This means chardet can now accurately detect both the encoding \u003cem\u003eand\u003c/em\u003e the language for all supported single-byte encodings.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e38 new languages\u003c/strong\u003e: Arabic, Belarusian, Breton, Croatian, Czech, Danish, Dutch, English, Esperanto, Estonian, Farsi, Finnish, French, German, Icelandic, Indonesian, Irish, Italian, Kazakh, Latvian, Lithuanian, Macedonian, Malay, Maltese, Norwegian, Polish, Portuguese, Romanian, Scottish Gaelic, Serbian, Slovak, Slovene, Spanish, Swedish, Tajik, Ukrainian, Vietnamese, and Welsh. Existing models for Bulgarian, Greek, Hebrew, Hungarian, Russian, Thai, and Turkish were also retrained with the new pipeline.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eEncodingEra\u003c/code\u003e filtering\u003c/strong\u003e: New \u003ccode\u003eencoding_era\u003c/code\u003e parameter to \u003ccode\u003edetect\u003c/code\u003e allows filtering by an \u003ccode\u003eEncodingEra\u003c/code\u003e flag enum (\u003ccode\u003eMODERN_WEB\u003c/code\u003e, \u003ccode\u003eLEGACY_ISO\u003c/code\u003e, \u003ccode\u003eLEGACY_MAC\u003c/code\u003e, \u003ccode\u003eLEGACY_REGIONAL\u003c/code\u003e, \u003ccode\u003eDOS\u003c/code\u003e, \u003ccode\u003eMAINFRAME\u003c/code\u003e, \u003ccode\u003eALL\u003c/code\u003e) allows callers to restrict detection to encodings from a specific era. \u003ccode\u003edetect()\u003c/code\u003e and \u003ccode\u003edetect_all()\u003c/code\u003e default to \u003ccode\u003eMODERN_WEB\u003c/code\u003e. The new \u003ccode\u003eMODERN_WEB\u003c/code\u003e default should drastically improve accuracy for users who are not working with legacy data. The tiers are:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eMODERN_WEB\u003c/code\u003e: UTF-8/16/32, Windows-125x, CP874, CJK multi-byte (widely used on the web)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLEGACY_ISO\u003c/code\u003e: ISO-8859-x, KOI8-R/U (legacy but well-known standards)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLEGACY_MAC\u003c/code\u003e: Mac-specific encodings (MacRoman, MacCyrillic, etc.)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLEGACY_REGIONAL\u003c/code\u003e: Uncommon regional/national encodings (KOI8-T, KZ1048, CP1006, etc.)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eDOS\u003c/code\u003e: DOS/OEM code pages (CP437, CP850, CP866, etc.)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMAINFRAME\u003c/code\u003e: EBCDIC variants (CP037, CP500, etc.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e--encoding-era\u003c/code\u003e CLI flag\u003c/strong\u003e: The \u003ccode\u003echardetect\u003c/code\u003e CLI now accepts \u003ccode\u003e-e\u003c/code\u003e/\u003ccode\u003e--encoding-era\u003c/code\u003e to control which encoding eras are considered during detection.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003emax_bytes\u003c/code\u003e and \u003ccode\u003echunk_size\u003c/code\u003e parameters\u003c/strong\u003e: \u003ccode\u003edetect()\u003c/code\u003e, \u003ccode\u003edetect_all()\u003c/code\u003e, and \u003ccode\u003eUniversalDetector\u003c/code\u003e now accept \u003ccode\u003emax_bytes\u003c/code\u003e (default 200KB) and \u003ccode\u003echunk_size\u003c/code\u003e (default 64KB) parameters for controlling how much data is examined. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/314\"\u003e#314\u003c/a\u003e, \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEncoding era preference tie-breaking\u003c/strong\u003e: When multiple encodings have very close confidence scores, the detector now prefers more modern/Unicode encodings over legacy ones.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCharset metadata registry\u003c/strong\u003e: New \u003ccode\u003echardet.metadata.charsets\u003c/code\u003e module provides structured metadata about all supported encodings, including their era classification and language filter.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eshould_rename_legacy\u003c/code\u003e now defaults intelligently\u003c/strong\u003e: When set to \u003ccode\u003eNone\u003c/code\u003e (the new default), legacy renaming is automatically enabled when \u003ccode\u003eencoding_era\u003c/code\u003e is \u003ccode\u003eMODERN_WEB\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDirect GB18030 support\u003c/strong\u003e: Replaced the redundant GB2312 prober with a proper GB18030 prober.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEBCDIC detection\u003c/strong\u003e: Added CP037 and CP500 EBCDIC model registrations for mainframe encoding detection.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBinary file detection\u003c/strong\u003e: Added basic binary file detection to abort analysis earlier on non-text files.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.12, 3.13, and 3.14 support\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/283\"\u003e#283\u003c/a\u003e, \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e; \u003ca href=\"https://redirect.github.com/chardet/chardet/issues/311\"\u003e#311\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGitHub Codespace support\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/312\"\u003e#312\u003c/a\u003e, \u003ca href=\"https://github.com/oxygen-dioxide\"\u003e\u003ccode\u003e@​oxygen-dioxide\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFix CP949 state machine\u003c/strong\u003e: Corrected the state machine for Korean CP949 encoding detection. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/268\"\u003e#268\u003c/a\u003e, \u003ca href=\"https://github.com/nenw\"\u003e\u003ccode\u003e@​nenw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix SJIS distribution analysis\u003c/strong\u003e: Fixed \u003ccode\u003eSJISDistributionAnalysis\u003c/code\u003e discarding valid second-byte range \u0026gt;= 0x80. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/315\"\u003e#315\u003c/a\u003e, \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix UTF-16/32 detection for non-ASCII-heavy text\u003c/strong\u003e: Improved detection of UTF-16/32 encoded CJK and other non-ASCII text by adding a \u003ccode\u003eMIN_RATIO\u003c/code\u003e threshold alongside the existing \u003ccode\u003eEXPECTED_RATIO\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix \u003ccode\u003eget_charset\u003c/code\u003e crash\u003c/strong\u003e: Resolved a crash when looking up unknown charset names.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix GB18030 \u003ccode\u003echar_len_table\u003c/code\u003e\u003c/strong\u003e: Corrected the character length table for GB18030 multi-byte sequences.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix UTF-8 state machine\u003c/strong\u003e: Updated to be more spec-compliant.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix \u003ccode\u003edetect_all()\u003c/code\u003e returning inactive probers\u003c/strong\u003e: Results from probers that determined \u0026quot;definitely not this encoding\u0026quot; are now excluded.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix early cutoff bug\u003c/strong\u003e: Resolved an issue where detection could terminate prematurely.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDefault UTF-8 fallback\u003c/strong\u003e: If UTF-8 has not been ruled out and nothing else is above the minimum threshold, UTF-8 is now returned as the default.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDropped Python 3.7, 3.8, and 3.9 support\u003c/strong\u003e: Now requires Python 3.10+. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/283\"\u003e#283\u003c/a\u003e, \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRemoved \u003ccode\u003eLatin1Prober\u003c/code\u003e and \u003ccode\u003eMacRomanProber\u003c/code\u003e\u003c/strong\u003e: These special-case probers have been replaced by the unified model-based approach described above. Latin-1, MacRoman, and all other single-byte encodings are now detected by \u003ccode\u003eSingleByteCharSetProber\u003c/code\u003e with trained language models, giving better accuracy and language identification.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRemoved EUC-TW support\u003c/strong\u003e: EUC-TW encoding detection has been removed as it is extremely rare in practice.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eLanguageFilter.NONE\u003c/code\u003e removed\u003c/strong\u003e: Use specific language filters or \u003ccode\u003eLanguageFilter.ALL\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnum types changed\u003c/strong\u003e: \u003ccode\u003eInputState\u003c/code\u003e, \u003ccode\u003eProbingState\u003c/code\u003e, \u003ccode\u003eMachineState\u003c/code\u003e, \u003ccode\u003eSequenceLikelihood\u003c/code\u003e, and \u003ccode\u003eCharacterCategory\u003c/code\u003e are now \u003ccode\u003eIntEnum\u003c/code\u003e (previously plain classes or \u003ccode\u003eEnum\u003c/code\u003e). \u003ccode\u003eLanguageFilter\u003c/code\u003e values changed from hardcoded hex to \u003ccode\u003eauto()\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003edetect()\u003c/code\u003e default behavior change\u003c/strong\u003e: \u003ccode\u003edetect()\u003c/code\u003e now defaults to \u003ccode\u003eencoding_era=EncodingEra.MODERN_WEB\u003c/code\u003e and \u003ccode\u003eshould_rename_legacy=None\u003c/code\u003e (auto-enabled for \u003ccode\u003eMODERN_WEB\u003c/code\u003e), whereas previously it defaulted to considering all encodings with no legacy renaming.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSwitched from Poetry/setuptools to uv + hatchling\u003c/strong\u003e: Build system modernized with \u003ccode\u003ehatch-vcs\u003c/code\u003e for version management.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/2fa72d84fdb9cb926eb1e7e40230a33b1dd81bb8\"\u003e\u003ccode\u003e2fa72d8\u003c/code\u003e\u003c/a\u003e Update version to 6.0.0.post1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/8a4636b1d4ef21d11cc8190f6ff271670b9d20ee\"\u003e\u003ccode\u003e8a4636b\u003c/code\u003e\u003c/a\u003e docs: modernize usage examples and reorganize table of contents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/20da71e7087159944e1ccfd586544a581744103a\"\u003e\u003ccode\u003e20da71e\u003c/code\u003e\u003c/a\u003e docs: fix copyright start year and remove first-person reference\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/b45ae91d9892c834a692e42d527670c6018d8301\"\u003e\u003ccode\u003eb45ae91\u003c/code\u003e\u003c/a\u003e docs: update copyright to 2015-2026 chardet contributors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/3f9910dbebfc2b268edba21eaf2175532c761c52\"\u003e\u003ccode\u003e3f9910d\u003c/code\u003e\u003c/a\u003e Add .readthedocs.yaml to fix RTD builds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/7ef7cd00f27e18c5a846c75b5b4aecd0ddd36186\"\u003e\u003ccode\u003e7ef7cd0\u003c/code\u003e\u003c/a\u003e Fix pyright type errors in chardetect.py and test.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/4025dfa2487e9a72d940ccf31ad933171aa178e5\"\u003e\u003ccode\u003e4025dfa\u003c/code\u003e\u003c/a\u003e Update documentation for 6.0.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/117082980035dadbe723b798cba267c537374747\"\u003e\u003ccode\u003e1170829\u003c/code\u003e\u003c/a\u003e Add LEGACY_REGIONAL encoding era and reclassify misplaced encodings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/19379ac0110df41a76835a89756ae23abc528bd3\"\u003e\u003ccode\u003e19379ac\u003c/code\u003e\u003c/a\u003e Add --encoding-era CLI flag and improve heuristic selection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/61308e2525dc43441ba07c6559d78bb9429ec31a\"\u003e\u003ccode\u003e61308e2\u003c/code\u003e\u003c/a\u003e Pre-release fixes: bump to 6.0.0, fix get_charset crash, cleanup\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chardet/chardet/compare/5.2.0...6.0.0.post1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `environs` from 14.3.0 to 14.6.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sloria/environs/blob/main/CHANGELOG.md\"\u003eenvirons's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e14.6.0 (2026-02-19)\u003c/h2\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix variable expansion with other characters (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/359\"\u003e#359\u003c/a\u003e).\nThanks \u003ca href=\"https://github.com/flymanzhao\"\u003eflymanzhao\u003c/a\u003e for reporting and \u003ca href=\"https://github.com/veeceey\"\u003eveeceey\u003c/a\u003e for the PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate lowest supported marshmallow version to 3.26.2 (\u003ca href=\"https://redirect.github.com/sloria/environs/pull/448\"\u003e#448\u003c/a\u003e).\nThanks \u003ca href=\"https://github.com/whyscream\"\u003ewhyscream\u003c/a\u003e for the PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e14.5.0 (2025-11-02)\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003estrip_whitespace\u003c/code\u003e param to \u003ccode\u003eFileAwareEnv\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/431\"\u003e#431\u003c/a\u003e).\nThanks \u003ca href=\"https://github.com/eandersons\"\u003eeandersons\u003c/a\u003e for the suggestion and PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9, which is EOL.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e14.4.0 (2025-10-29)\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for ISO 8601 durations to \u003ccode\u003eenv.timedelta\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/sloria/environs/pull/434\"\u003e#434\u003c/a\u003e).\nThanks \u003ca href=\"https://github.com/lucas-bremond\"\u003elucas-bremond\u003c/a\u003e for the suggestion and PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/947d7bdf40953a10422a94baee7621e72f6c57e3\"\u003e\u003ccode\u003e947d7bd\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/1a47a3658bf705e6270cb685efc38c22264c9110\"\u003e\u003ccode\u003e1a47a36\u003c/code\u003e\u003c/a\u003e fix: use fullmatch for expand_vars single-variable detection (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/450\"\u003e#450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/f678dabd2ebb32a22a90f439d8518f8c2ddcb60c\"\u003e\u003ccode\u003ef678dab\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/449\"\u003e#449\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/03c2e94c5fd4fbb93f8f1b45e8ab261cc52916a5\"\u003e\u003ccode\u003e03c2e94\u003c/code\u003e\u003c/a\u003e Update used marshmallow version according to CVE-2025-68480 (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/448\"\u003e#448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/3085b60655034b72d322fb40498d42b2f9e3d9bb\"\u003e\u003ccode\u003e3085b60\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/68d92c021f01e1e5c1e4edf63f1cfe71a2362f27\"\u003e\u003ccode\u003e68d92c0\u003c/code\u003e\u003c/a\u003e Add SECUCURITY.md (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/446\"\u003e#446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/a4f550996d7d75107fe6525ecf905ef6483ed3b3\"\u003e\u003ccode\u003ea4f5509\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/444\"\u003e#444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/cceab04b25cc676a0a023bda83ac094ac755142d\"\u003e\u003ccode\u003ecceab04\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/445\"\u003e#445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/6730f6c8a91e40ef607162730e64734b6b779d4a\"\u003e\u003ccode\u003e6730f6c\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/d04b64fed0193c7b8a0bb4bb3891c463ab60d988\"\u003e\u003ccode\u003ed04b64f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/443\"\u003e#443\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sloria/environs/compare/14.3.0...14.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `execnet` from 2.1.1 to 2.1.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/execnet/blob/master/CHANGELOG.rst\"\u003eexecnet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.1.2 (2025-11-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#376](https://github.com/pytest-dev/execnet/issues/376) \u0026lt;https://github.com/pytest-dev/execnet/issues/376\u0026gt;\u003c/code\u003e__ fix artifact building - pin minimal version of hatch.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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/execnet/commit/9313ece783ba2bd565eb1a2a8a71be441af56199\"\u003e\u003ccode\u003e9313ece\u003c/code\u003e\u003c/a\u003e Release 2.1.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/45a4d872775ae77366b62d6c93adb5c3ec51c966\"\u003e\u003ccode\u003e45a4d87\u003c/code\u003e\u003c/a\u003e Test on pypy-3.11 instead of pypy-3.8 (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/03462f5ad357cb28de83f28af6977e620b81c607\"\u003e\u003ccode\u003e03462f5\u003c/code\u003e\u003c/a\u003e Update hatchling version requirement in pyproject.toml (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/f05618084b3e524babe6d684e97443a16c4ecaf2\"\u003e\u003ccode\u003ef056180\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/a9d75e74b6913b9f4940de4d90e796b464ca88f9\"\u003e\u003ccode\u003ea9d75e7\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/9bfff13008d02cb5e0943ac57811b07ed7d81ffd\"\u003e\u003ccode\u003e9bfff13\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/caf108da5946aa4355eb853cb0f1fb5d6a359013\"\u003e\u003ccode\u003ecaf108d\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/d3074cd90921317e8d9510bf2fb41e48ed7b62fd\"\u003e\u003ccode\u003ed3074cd\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/370\"\u003e#370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/35aa8073a2ae51a38bb787784fd79d0bfba517cb\"\u003e\u003ccode\u003e35aa807\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/369\"\u003e#369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/d823f13ba81a1d14051dda54eb0931c73b7afdf7\"\u003e\u003ccode\u003ed823f13\u003c/code\u003e\u003c/a\u003e build(deps): bump hynek/build-and-inspect-python-package (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/execnet/compare/v2.1.1...v2.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gitpython` from 3.1.45 to 3.1.46\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gitpython-developers/GitPython/releases\"\u003egitpython's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.46\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare a new release by \u003ca href=\"https://github.com/Byron\"\u003e\u003ccode\u003e@​Byron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2063\"\u003egitpython-developers/GitPython#2063\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2067\"\u003egitpython-developers/GitPython#2067\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump git/ext/gitdb from \u003ccode\u003e335c0f6\u003c/code\u003e to \u003ccode\u003e39d7dbf\u003c/code\u003e by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2068\"\u003egitpython-developers/GitPython#2068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2070\"\u003egitpython-developers/GitPython#2070\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump git/ext/gitdb from \u003ccode\u003e39d7dbf\u003c/code\u003e to \u003ccode\u003ef8fdfec\u003c/code\u003e by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2071\"\u003egitpython-developers/GitPython#2071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003eSymbolicReference.reference\u003c/code\u003e property by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2074\"\u003egitpython-developers/GitPython#2074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: Add support for hasconfig git rule. by \u003ca href=\"https://github.com/bvanelli\"\u003e\u003ccode\u003e@​bvanelli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2075\"\u003egitpython-developers/GitPython#2075\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump github/codeql-action from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2076\"\u003egitpython-developers/GitPython#2076\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse actual return type in annotation for method submodule_update by \u003ca href=\"https://github.com/extrwi\"\u003e\u003ccode\u003e@​extrwi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2078\"\u003egitpython-developers/GitPython#2078\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump git/ext/gitdb from \u003ccode\u003ef8fdfec\u003c/code\u003e to \u003ccode\u003e65321a2\u003c/code\u003e by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2082\"\u003egitpython-developers/GitPython#2082\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreliminary support for index format v3 by \u003ca href=\"https://github.com/blahgeek\"\u003e\u003ccode\u003e@​blahgeek\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2081\"\u003egitpython-developers/GitPython#2081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2084\"\u003egitpython-developers/GitPython#2084\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePin \u003ccode\u003emypy==1.18.2\u003c/code\u003e by \u003ca href=\"https://github.com/George-Ogden\"\u003e\u003ccode\u003e@​George-Ogden\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2087\"\u003egitpython-developers/GitPython#2087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect \u003ccode\u003eos.Pathlike\u003c/code\u003e by \u003ca href=\"https://github.com/George-Ogden\"\u003e\u003ccode\u003e@​George-Ogden\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2086\"\u003egitpython-developers/GitPython#2086\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump git/ext/gitdb from \u003ccode\u003e65321a2\u003c/code\u003e to \u003ccode\u003e4c63ee6\u003c/code\u003e by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2093\"\u003egitpython-developers/GitPython#2093\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eJoin \u003ccode\u003ePathlike\u003c/code\u003e Object to Tree by \u003ca href=\"https://github.com/George-Ogden\"\u003e\u003ccode\u003e@​George-Ogden\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2094\"\u003egitpython-developers/GitPython#2094\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/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2074\"\u003egitpython-developers/GitPython#2074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bvanelli\"\u003e\u003ccode\u003e@​bvanelli\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2075\"\u003egitpython-developers/GitPython#2075\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/extrwi\"\u003e\u003ccode\u003e@​extrwi\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2078\"\u003egitpython-developers/GitPython#2078\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/blahgeek\"\u003e\u003ccode\u003e@​blahgeek\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2081\"\u003egitpython-developers/GitPython#2081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/George-Ogden\"\u003e\u003ccode\u003e@​George-Ogden\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2087\"\u003egitpython-developers/GitPython#2087\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/gitpython-developers/GitPython/compare/3.1.45...3.1.46\"\u003ehttps://github.com/gitpython-developers/GitPython/compare/3.1.45...3.1.46\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/9e24eb6b72c1851e46e09133b83b48f2059037d7\"\u003e\u003ccode\u003e9e24eb6\u003c/code\u003e\u003c/a\u003e Prepare next release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/b8bb60e544a1f389120b5540c6e1e7505427c279\"\u003e\u003ccode\u003eb8bb60e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/issues/2094\"\u003e#2094\u003c/a\u003e from George-Ogden/join-pathlike\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/c8b58c09904dabe67222165e4d3eecf4c8f07490\"\u003e\u003ccode\u003ec8b58c0\u003c/code\u003e\u003c/a\u003e Update test/test_tree.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/88e26141c738f6ac3beb1a433039611f88c2c30d\"\u003e\u003ccode\u003e88e2614\u003c/code\u003e\u003c/a\u003e Allow joining path to tree\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/9fa28ae108dc39cfb13282cd18d4251d0118dd52\"\u003e\u003ccode\u003e9fa28ae\u003c/code\u003e\u003c/a\u003e Add failing tests for joining paths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/6d66a02d14929976d9d8409773054e2e022eae0e\"\u003e\u003ccode\u003e6d66a02\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/issues/2093\"\u003e#2093\u003c/a\u003e from gitpython-developers/dependabot/submodules/git/...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/f738029ab05fe8356022248e68f9119c46b2f1e5\"\u003e\u003ccode\u003ef738029\u003c/code\u003e\u003c/a\u003e Bump git/ext/gitdb from \u003ccode\u003e65321a2\u003c/code\u003e to \u003ccode\u003e4c63ee6\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/eecc28d2e78d799105a2070acdb530ee5c81a9e8\"\u003e\u003ccode\u003eeecc28d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/issues/2086\"\u003e#2086\u003c/a\u003e from George-Ogden/true-pathlike\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/0cb55fb4adca4f2b26767e85ef8652ef13b834a1\"\u003e\u003ccode\u003e0cb55fb\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Add tests with non-ascii characters\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/171062655e24b6a6ca1a3beab3c7679278350ab5\"\u003e\u003ccode\u003e1710626\u003c/code\u003e\u003c/a\u003e Add tests with non-ascii characters\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gitpython-developers/GitPython/compare/3.1.45...3.1.46\"\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 `iniconfig` from 2.1.0 to 2.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd IniConfig.parse() with inline comment stripping and Unicode whitespace handling by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/70\"\u003epytest-dev/iniconfig#70\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.2.0\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.3.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eadd IniConfig.parse() classmethod with strip_inline_comments parameter (fixes \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/55\"\u003e#55\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eby default (strip_inline_comments=True), inline comments are properly stripped from values\u003c/li\u003e\n\u003cli\u003eset strip_inline_comments=False to preserve old behavior if needed\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eIniConfig() constructor maintains backward compatibility (does not strip inline comments)\u003c/li\u003e\n\u003cli\u003eusers should migrate to IniConfig.parse() for correct comment handling\u003c/li\u003e\n\u003cli\u003eadd strip_section_whitespace parameter to IniConfig.parse() (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eopt-in parameter to strip Unicode whitespace from section names\u003c/li\u003e\n\u003cli\u003ewhen True, strips Unicode whitespace (U+00A0, U+2000, U+3000, etc.) from section names\u003c/li\u003e\n\u003cli\u003ewhen False (default), preserves existing behavior for backward compatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eclarify Unicode whitespace handling (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003esince iniconfig 2.0.0 (Python 3 only), all strings are Unicode by default\u003c/li\u003e\n\u003cli\u003ePython 3's str.strip() has handled Unicode whitespace since Python 3.0 (2008)\u003c/li\u003e\n\u003cli\u003einiconfig automatically benefits from this in all supported versions (Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003ekey names and values have Unicode whitespace properly stripped using Python's built-in methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.2.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.8 and 3.9 support (now requires Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 classifier\u003c/li\u003e\n\u003cli\u003emigrate from hatchling to setuptools 77 with setuptools_scm\u003c/li\u003e\n\u003cli\u003eadopt PEP 639 license specifiers and PEP 740 build attestations\u003c/li\u003e\n\u003cli\u003emigrate from black + pyupgrade to ruff\u003c/li\u003e\n\u003cli\u003emigrate CI to uv and unified test workflow\u003c/li\u003e\n\u003cli\u003eautomate GitHub releases and PyPI publishing via Trusted Publishing\u003c/li\u003e\n\u003cli\u003einclude tests in sdist\u003c/li\u003e\n\u003cli\u003emodernize code for Python 3.10+ (remove \u003cstrong\u003efuture\u003c/strong\u003e annotations, TYPE_CHECKING guards)\u003c/li\u003e\n\u003cli\u003erename _ParsedLine to ParsedLine\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/7faed13ae50bad7c5da3f5782f254a8a7736bb84\"\u003e\u003ccode\u003e7faed13\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/70\"\u003e#70\u003c/a\u003e from RonnyPfannschmidt/comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/58c08691bbb86aee8efbf73e37293dd6d65b68b4\"\u003e\u003ccode\u003e58c0869\u003c/code\u003e\u003c/a\u003e Refactor: Simplify IniConfig constructor and parse() method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/6d0af4529e4375e49dc871aa3d5ce17fe1791afe\"\u003e\u003ccode\u003e6d0af45\u003c/code\u003e\u003c/a\u003e Add strip_section_whitespace parameter to address issue \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/e2d89f5283cbeb4b4ca55fe88b1c353c343b4972\"\u003e\u003ccode\u003ee2d89f5\u003c/code\u003e\u003c/a\u003e Add IniConfig.parse() classmethod to fix inline comment handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/57b7ed9c7a5950f9c57b2cfbe641ff4cc04baf1c\"\u003e\u003ccode\u003e57b7ed9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/66\"\u003e#66\u003c/a\u003e from killiandesse/pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27ac49f56794db397ecb017414663a81e701dfdc\"\u003e\u003ccode\u003e27ac49f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/69\"\u003e#69\u003c/a\u003e from RonnyPfannschmidt/limit-attestation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/3402322097aa7b6eba9a68c96faddc780e04b085\"\u003e\u003ccode\u003e3402322\u003c/code\u003e\u003c/a\u003e Disable build attestations for PRs from forks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27e6a7b4a7b24f7f8a5e5492b071ab16eff36f95\"\u003e\u003ccode\u003e27e6a7b\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/65228817674f099d48cab0f0974000ea0e3031c1\"\u003e\u003ccode\u003e6522881\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/68\"\u003e#68\u003c/a\u003e from pytest-dev/fix-build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/8b2bccb3b6be37c9bf70a4fbe0cda4c92c70355f\"\u003e\u003ccode\u003e8b2bccb\u003c/code\u003e\u003c/a\u003e Update CHANGELOG and automate releases\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.1.0...v2.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markupsafe` from 3.0.2 to 3.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/markupsafe/releases\"\u003emarkupsafe's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.3\u003c/h2\u003e\n\u003cp\u003eThis is the MarkupSafe 3.0.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/MarkupSafe/3.0.3/\"\u003ehttps://pypi.org/project/MarkupSafe/3.0.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://markupsafe.palletsprojects.com/page/changes/#version-3-0-3\"\u003ehttps://markupsafe.palletsprojects.com/page/changes/#version-3-0-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/markupsafe/milestone/15?closed=1\"\u003ehttps://github.com/pallets/markupsafe/milestone/15?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e__version__\u003c/code\u003e raises \u003ccode\u003eDeprecationWarning\u003c/code\u003e instead of \u003ccode\u003eUserWarning\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/487\"\u003e#487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdopt multi-phase initialization PEP 489 for the C extension. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/494\"\u003e#494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild Windows ARM64 wheels. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/485\"\u003e#485\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild Python 3.14 wheels. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/503\"\u003e#503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild riscv64 wheels. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/505\"\u003e#505\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/markupsafe/blob/main/CHANGES.rst\"\u003emarkupsafe's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.0.3\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-27\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e__version__\u003c/code\u003e raises \u003ccode\u003eDeprecationWarning\u003c/code\u003e instead of \u003ccode\u003eUserWarning\u003c/code\u003e.\n:issue:\u003ccode\u003e487\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdopt multi-phase initialisation (:pep:\u003ccode\u003e489\u003c/code\u003e) for the C extension.\n:issue:\u003ccode\u003e494\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild Windows ARM64 wheels. :issue:\u003ccode\u003e485\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild Python 3.14 wheels. :issue:\u003ccode\u003e503\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild riscv64 wheels. :issue:\u003ccode\u003e505\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/297fc8e356e6836a62087949245d09a28e9f1b13\"\u003e\u003ccode\u003e297fc8e\u003c/code\u003e\u003c/a\u003e release version 3.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/7e4e6ce249107c5f27fa6fe890e29da7a8dc8f0c\"\u003e\u003ccode\u003e7e4e6ce\u003c/code\u003e\u003c/a\u003e Free-threading: run with pytest-run-paralell (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/507\"\u003e#507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/6100b9c0d466495a08d55b33cb172d7b5d8e9aa1\"\u003e\u003ccode\u003e6100b9c\u003c/code\u003e\u003c/a\u003e enable riscv64 wheels (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/506\"\u003e#506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/c9d5ecfc7eec6f611b19cdc8e1cde1aaa65cb8eb\"\u003e\u003ccode\u003ec9d5ecf\u003c/code\u003e\u003c/a\u003e enable riscv64 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/2f9b33753052e7c6df1464a7c900787d04ae9daf\"\u003e\u003ccode\u003e2f9b337\u003c/code\u003e\u003c/a\u003e tox for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/78d951a9549dee9fc901c55fc79a74a5f01e96fc\"\u003e\u003ccode\u003e78d951a\u003c/code\u003e\u003c/a\u003e update dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/bb6744e392e79611b110c5ba022238eb1b855cc2\"\u003e\u003ccode\u003ebb6744e\u003c/code\u003e\u003c/a\u003e add entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/65c4134ab16a3faccbcac2cba90da0db2b799542\"\u003e\u003ccode\u003e65c4134\u003c/code\u003e\u003c/a\u003e upgrade cibuildwheel, add \u003ccode\u003ecp314\u003c/code\u003e wheels and test on CPython 3.14 (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/504\"\u003e#504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/3a9bd88b84c9edba8b922bb12b84a59feed98788\"\u003e\u003ccode\u003e3a9bd88\u003c/code\u003e\u003c/a\u003e add cp314 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/aafe44d87bd7974bc82af8c4010dea9938441edf\"\u003e\u003ccode\u003eaafe44d\u003c/code\u003e\u003c/a\u003e remove slsa provenance (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/501\"\u003e#501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/markupsafe/compare/3.0.2...3.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `packaging` from 25.0 to 26.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/releases\"\u003epackaging's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.0\u003c/h2\u003e\n\u003cp\u003eRead about the performance improvements here: \u003ca href=\"https://iscinumpy.dev/post/packaging-faster\"\u003ehttps://iscinumpy.dev/post/packaging-faster\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePEP 751: support pylock by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/900\"\u003epypa/packaging#900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePEP 794: import name metadata by \u003ca href=\"https://github.com/brettcannon\"\u003e\u003ccode\u003e@​brettcannon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/948\"\u003epypa/packaging#948\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport writing metadata by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/846\"\u003epypa/packaging#846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e__replace__\u003c/code\u003e for \u003ccode\u003eVersion\u003c/code\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1003\"\u003epypa/packaging#1003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport positional pattern matching for \u003ccode\u003eVersion\u003c/code\u003e and \u003ccode\u003eSpecifier\u003c/code\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1004\"\u003epypa/packaging#1004\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePEP 440 handling of prereleases for \u003ccode\u003eSpecifier.contains\u003c/code\u003e, \u003ccode\u003eSpecifierSet.contains\u003c/code\u003e, and \u003ccode\u003eSpecifierSet.filter\u003c/code\u003e by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/897\"\u003epypa/packaging#897\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle PEP 440 edge case in \u003ccode\u003eSpecifierSet.filter\u003c/code\u003e by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/942\"\u003epypa/packaging#942\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust arbitrary equality intersection preservation in \u003ccode\u003eSpecifierSet\u003c/code\u003e by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/951\"\u003epypa/packaging#951\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn \u003ccode\u003eFalse\u003c/code\u003e instead of raising for \u003ccode\u003e.contains\u003c/code\u003e with invalid version by \u003ca href=\"https://github.com/Liam-DeVoe\"\u003e\u003ccode\u003e@​Liam-DeVoe\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/932\"\u003epypa/packaging#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport arbitrary equality on arbitrary strings for \u003ccode\u003eSpecifier\u003c/code\u003e and \u003ccode\u003eSpecifierSet\u003c/code\u003e's \u003ccode\u003efilter\u003c/code\u003e and \u003ccode\u003econtains\u003c/code\u003e method. by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/954\"\u003epypa/packaging#954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly try to parse as \u003ccode\u003eVersion\u003c/code\u003e on certain marker keys, return \u003ccode\u003eFalse\u003c/code\u003e on unequal ordered comparsions by \u003ca href=\"https://github.com/JP-Ellis\"\u003e\u003ccode\u003e@​JP-Ellis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/939\"\u003epypa/packaging#939\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003e_hash\u003c/code\u003e when unpickling \u003ccode\u003eTag()\u003c/code\u003e by \u003ca href=\"https://github.com/dholth\"\u003e\u003ccode\u003e@​dholth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/860\"\u003epypa/packaging#860\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrect comment and simplify implicit prerelease handling in \u003ccode\u003eSpecifier.prereleases\u003c/code\u003e by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/896\"\u003epypa/packaging#896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse explicit \u003ccode\u003e_GLibCVersion\u003c/code\u003e \u003ccode\u003eNamedTuple\u003c/code\u003e in \u003ccode\u003e_manylinux\u003c/code\u003e by \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/868\"\u003epypa/packaging#868\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDetect invalid license expressions containing \u003ccode\u003e()\u003c/code\u003e by \u003ca href=\"https://github.com/bwoodsend\"\u003e\u003ccode\u003e@​bwoodsend\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/879\"\u003epypa/packaging#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrect regex for metadata \u003ccode\u003e'name'\u003c/code\u003e format by \u003ca href=\"https://github.com/di\"\u003e\u003ccode\u003e@​di\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/925\"\u003epypa/packaging#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove the message around expecting a semicolon by \u003ca href=\"https://github.com/pradyunsg\"\u003e\u003ccode\u003e@​pradyunsg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/833\"\u003epypa/packaging#833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport nested parens in license expressions by \u003ca href=\"https://github.com/Liam-DeVoe\"\u003e\u003ccode\u003e@​Liam-DeVoe\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/931\"\u003epypa/packaging#931\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd space before at symbol in \u003ccode\u003eRequirements\u003c/code\u003e string by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/953\"\u003epypa/packaging#953\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eA root logger use found by ruff LOG, use \u003ccode\u003epackaging\u003c/code\u003e logger instead by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/965\"\u003epypa/packaging#965\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBetter support for subclassing \u003ccode\u003eMarker\u003c/code\u003e and \u003ccode\u003eRequirement\u003c/code\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1022\"\u003epypa/packaging#1022\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNormalize all extras, not just if it comes first by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1024\"\u003epypa/packaging#1024\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't produce a broken repr if \u003ccode\u003eMarker\u003c/code\u003e fails to construct by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1033\"\u003epypa/packaging#1033\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePerformance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid recompiling regexes in the tokenizer for a 3x speedup by \u003ca href=\"https://github.com/hauntsaninja\"\u003e\u003ccode\u003e@​hauntsaninja\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1019\"\u003epypa/packaging#1019\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove performance in \u003ccode\u003e_manylinux.py\u003c/code\u003e by \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/869\"\u003epypa/packaging#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMinor cleanups to \u003ccode\u003eVersion\u003c/code\u003e by \u003ca href=\"https://github.com/bearomorphism\"\u003e\u003ccode\u003e@​bearomorphism\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/913\"\u003epypa/packaging#913\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip redundant creation of \u003ccode\u003eVersion\u003c/code\u003es in specifier comparison by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/986\"\u003epypa/packaging#986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache \u003ccode\u003eSpecifier\u003c/code\u003e's Version by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/985\"\u003epypa/packaging#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e a little faster by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/987\"\u003epypa/packaging#987\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMinor \u003ccode\u003eVersion\u003c/code\u003e regex cleanup by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/990\"\u003epypa/packaging#990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFaster regex on Python 3.11.5+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/988\"\u003epypa/packaging#988\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1055\"\u003epypa/packaging#1055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLazily calculate \u003ccode\u003e_key\u003c/code\u003e in \u003ccode\u003eVersion\u003c/code\u003e by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/989\"\u003epypa/packaging#989\u003c/a\u003e and regression for \u003ccode\u003epackaging_legacy\u003c/code\u003e fixed by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1048\"\u003epypa/packaging#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFaster \u003ccode\u003ecanonicalize_version\u003c/code\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/993\"\u003epypa/packaging#993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003efullmatch\u003c/code\u003e in a couple more places by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/992\"\u003epypa/packaging#992\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/blob/main/CHANGELOG.rst\"\u003epackaging's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e26.0 - 2026-01-20\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nFeatures:\n\u003cul\u003e\n\u003cli\u003ePEP 751: support pylock (:pull:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 794: import name metadata (:pull:\u003ccode\u003e948\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport for writing metadata to a file (:pull:\u003ccode\u003e846\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e__replace__\u003c/code\u003e on Version (:pull:\u003ccode\u003e1003\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport positional pattern matching for \u003ccode\u003eVersion\u003c/code\u003e and \u003ccode\u003eSpecifierSet\u003c/code\u003e (:pull:\u003ccode\u003e1004\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePEP 440 handling of prereleases for \u003ccode\u003eSpecifier.contains\u003c/code\u003e, \u003ccode\u003eSpecifierSet.contains\u003c/code\u003e, and \u003ccode\u003eSpecifierSet.filter\u003c/code\u003e (:pull:\u003ccode\u003e897\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eHandle PEP 440 edge case in \u003ccode\u003eSpecifierSet.filter\u003c/code\u003e (:pull:\u003ccode\u003e942\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdjust arbitrary equality intersection preservation in \u003ccode\u003eSpecifierSet\u003c/code\u003e (:pull:\u003ccode\u003e951\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eReturn \u003ccode\u003eFalse\u003c/code\u003e instead of raising for \u003ccode\u003e.contains\u003c/code\u003e with invalid version (:pull:\u003ccode\u003e932\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport arbitrary equality on arbitrary strings for \u003ccode\u003eSpecifier\u003c/code\u003e and \u003ccode\u003eSpecifierSet\u003c/code\u003e's \u003ccode\u003efilter\u003c/code\u003e and \u003ccode\u003econtains\u003c/code\u003e method. (:pull:\u003ccode\u003e954\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOnly try to parse as \u003ccode\u003eVersion\u003c/code\u003e on certain marker keys, return \u003ccode\u003eFalse\u003c/code\u003e on unequal ordered comparisons (:pull:\u003ccode\u003e939\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003e_hash\u003c/code\u003e when unpickling \u003ccode\u003eTag()\u003c/code\u003e (:pull:\u003ccode\u003e860\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eCorrect comment and simplify implicit prerelease handling in \u003ccode\u003eSpecifier.prereleases\u003c/code\u003e (:pull:\u003ccode\u003e896\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse explicit \u003ccode\u003e_GLibCVersion\u003c/code\u003e \u003ccode\u003eNamedTuple\u003c/code\u003e in \u003ccode\u003e_manylinux\u003c/code\u003e (:pull:\u003ccode\u003e868\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDetect invalid license expressions containing \u003ccode\u003e()\u003c/code\u003e (:pull:\u003ccode\u003e879\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eCorrect regex for metadata \u003ccode\u003e'name'\u003c/code\u003e format (:pull:\u003ccode\u003e925\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eImprove the message around expecting a semicolon (:pull:\u003ccode\u003e833\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport nested parens in license expressions (:pull:\u003ccode\u003e931\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd space before at symbol in \u003ccode\u003eRequirements\u003c/code\u003e string (:pull:\u003ccode\u003e953\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eA root logger use found, use a \u003ccode\u003epackaging\u003c/code\u003e logger instead (:pull:\u003ccode\u003e965\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eBetter support for subclassing \u003ccode\u003eMarker\u003c/code\u003e and \u003ccode\u003eRequirement\u003c/code\u003e (:pull:\u003ccode\u003e1022\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize all extras, not just if it comes first (:pull:\u003ccode\u003e1024\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't produce a broken repr if \u003ccode\u003eMarker\u003c/code\u003e fails to construct (:pull:\u003ccode\u003e1033\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePerformance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid recompiling regexes in the tokenizer for a 3x speedup (:pull:\u003ccode\u003e1019\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance in \u003ccode\u003e_manylinux.py\u003c/code\u003e (:pull:\u003ccode\u003e869\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMinor cleanups to \u003ccode\u003eVersion\u003c/code\u003e (:pull:\u003ccode\u003e913\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSkip redundant creation of \u003ccode\u003eVersion\u003c/code\u003e's in specifier comparison (:pull:\u003ccode\u003e986\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eCache the \u003ccode\u003eSpecifier\u003c/code\u003e's \u003ccode\u003eVersion\u003c/code\u003e (:pull:\u003ccode\u003e985\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e a little faster (:pull:\u003ccode\u003e987\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMinor \u003ccode\u003eVersion\u003c/code\u003e regex cleanup (:pull:\u003ccode\u003e990\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFaster regex on Python 3.11.5+ for \u003ccode\u003eVersion\u003c/code\u003e (:pull:\u003ccode\u003e988\u003c/code\u003e, :pull:\u003ccode\u003e1055\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eLazily calculate \u003ccode\u003e_key\u003c/code\u003e in \u003ccode\u003eVersion\u003c/code\u003e (:pull:\u003ccode\u003e989\u003c/code\u003e, :pull:\u003ccode\u003e1048\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFaster \u003ccode\u003ecanonicalize_version\u003c/code\u003e (:pull:\u003ccode\u003e993\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ere.fullmatch\u003c/code\u003e in a couple more places (:pull:\u003ccode\u003e992\u003c/code\u003e, :pull:\u003ccode\u003e1029\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003emap\u003c/code\u003e instead of generator (:pull:\u003ccode\u003e996\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecate \u003ccode\u003e._version\u003c/code\u003e (\u003ccode\u003e_Version\u003c/code\u003e, a \u003ccode\u003eNamedTuple\u003c/code\u003e) (:pull:\u003ccode\u003e995\u003c/code\u003e, :pull:\u003ccode\u003e1062\u003c/code\u003e)\u003cbr /\u003e\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/3b77a26f5a27473ad3b08194d773f325d018a2d0\"\u003e\u003ccode\u003e3b77a26\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/31371cce593d2bde0dd8c436ecfb7d53cb91cfb6\"\u003e\u003ccode\u003e31371cc\u003c/code\u003e\u003c/a\u003e docs: prepare for 26.0 final (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1063\"\u003e#1063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/9627a8821f09e4c55cd6e9daadb617b67c4741c2\"\u003e\u003ccode\u003e9627a88\u003c/code\u003e\u003c/a\u003e perf: dual replace (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1064\"\u003e#1064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/d5398b8bc19f3fad7b035ceb83023caf06d6e2da\"\u003e\u003ccode\u003ed5398b8\u003c/code\u003e\u003c/a\u003e fix: restore ._version as a compat shim (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1062\"\u003e#1062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/3a7b600a126d237b2ad3cd7e25d2cb5c176276af\"\u003e\u003ccode\u003e3a7b600\u003c/code\u003e\u003c/a\u003e Bump for development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/d4eefdccf992e963c48011875301d93df6a7f2cc\"\u003e\u003ccode\u003ed4eefdc\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/46189124fb43d8989d370902c80ab156eb83a45d\"\u003e\u003ccode\u003e4618912\u003c/code\u003e\u003c/a\u003e docs: prepare for 26.0rc3 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1060\"\u003e#1060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/0cf1b41b4b321ae08cad7d3e49cfaff5578fe813\"\u003e\u003ccode\u003e0cf1b41\u003c/code\u003e\u003c/a\u003e ci: test on first public release of CPythons (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/716beb1c0a5d7a398bf57fbd80bc2501811e616b\"\u003e\u003ccode\u003e716beb1\u003c/code\u003e\u003c/a\u003e perf:  10% faster stripping zeros (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1058\"\u003e#1058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/350a2306700b738f487f251efa278f532b263dee\"\u003e\u003ccode\u003e350a230\u003c/code\u003e\u003c/a\u003e fix: support CPython 3.11.0-3.11.4 and older PyPy3.11 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/packaging/compare/25.0...26.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `parse` from 1.20.2 to 1.21.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/r1chardj0n3s/parse/releases\"\u003eparse's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.21.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix microsecond precision loss in timestamp parsing by \u003ca href=\"https://github.com/karthiksai109\"\u003e\u003ccode\u003e@​karthiksai109\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/223\"\u003er1chardj0n3s/parse#223\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/karthiksai109\"\u003e\u003ccode\u003e@​karthiksai109\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/223\"\u003er1chardj0n3s/parse#223\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/r1chardj0n3s/parse/compare/1.21.0...1.21.1\"\u003ehttps://github.com/r1chardj0n3s/parse/compare/1.21.0...1.21.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.21.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eallow triggering CI manually by \u003ca href=\"https://github.com/wimglenn\"\u003e\u003ccode\u003e@​wimglenn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/195\"\u003er1chardj0n3s/parse#195\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eActually raise exception by \u003ca href=\"https://github.com/shenanigansd\"\u003e\u003ccode\u003e@​shenanigansd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/196\"\u003er1chardj0n3s/parse#196\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ereadme: Clarify 'd' type by \u003ca href=\"https://github.com/dreua\"\u003e\u003ccode\u003e@​dreua\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/198\"\u003er1chardj0n3s/parse#198\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the actions-infrastructure group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/219\"\u003er1chardj0n3s/parse#219\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow grouping char (,_) in decimal format string by \u003ca href=\"https://github.com/moi90\"\u003e\u003ccode\u003e@​moi90\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/221\"\u003er1chardj0n3s/parse#221\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/shenanigansd\"\u003e\u003ccode\u003e@​shenanigansd\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/196\"\u003er1chardj0n3s/parse#196\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dreua\"\u003e\u003ccode\u003e@​dreua\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/198\"\u003er1chardj0n3s/parse#198\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/219\"\u003er1chardj0n3s/parse#219\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/moi90\"\u003e\u003ccode\u003e@​moi90\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/221\"\u003er1chardj0n3s/parse#221\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/r1chardj0n3s/parse/compare/1.20.2...1.21.0\"\u003ehttps://github.com/r1chardj0n3s/parse/compare/1.20.2...1.21.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/9a2ae8d2c77e845415e5ad6952e7b2dba09a56d2\"\u003e\u003ccode\u003e9a2ae8d\u003c/code\u003e\u003c/a\u003e bump version for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/cd6bf203ab0353c038a0556fbbe0851ff56f539d\"\u003e\u003ccode\u003ecd6bf20\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/issues/223\"\u003e#223\u003c/a\u003e from karthiksai109/fix-microsecond-precision\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/ba6803d57179a4b026c8ed51d970156653153b62\"\u003e\u003ccode\u003eba6803d\u003c/code\u003e\u003c/a\u003e Fix microsecond precision loss in timestamp parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/738447715c76f8ebc460b33320307faccafbc599\"\u003e\u003ccode\u003e7384477\u003c/code\u003e\u003c/a\u003e release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/35b9ffb355f94bc4cb781fbb3b0adff2232a5602\"\u003e\u003ccode\u003e35b9ffb\u003c/code\u003e\u003c/a\u003e Allow grouping char (,_) in decimal format string (\u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/d50f48c4dcabbeaf738061c186314a1433572ae0\"\u003e\u003ccode\u003ed50f48c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/issues/219\"\u003e#219\u003c/a\u003e from r1chardj0n3s/dependabot/github_actions/actions-i...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/96cdf95c01a8e4d9659bcc81dfc20ada2f788276\"\u003e\u003ccode\u003e96cdf95\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the actions-infrastructure group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/d5bd49a6232f3a0ad074e30ec1e02959cdb3e70c\"\u003e\u003ccode\u003ed5bd49a\u003c/code\u003e\u003c/a\u003e restore 3.7 and 2.7 test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/5bfb45d9f30890e85a5c440e14fc25a930a3faaf\"\u003e\u003ccode\u003e5bfb45d\u003c/code\u003e\u003c/a\u003e Update README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/a497a407397f23ef527879a136e7fef2344180db\"\u003e\u003ccode\u003ea497a40\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/issues/198\"\u003e#198\u003c/a\u003e from dreua/patch-2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/r1chardj0n3s/parse/compare/1.20.2...1.21.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `parse-type` from 0.6.4 to 0.6.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jenisys/parse_type/releases\"\u003eparse-type's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.6\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDisable setuptools-scm: Too many side-effects\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.6.5\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eREADME: Remove \u0026quot;downloads\u0026quot; badge -- too noisy\u003c/li\u003e\n\u003cli\u003esetup.py/pyproject.toml: Update, correct and tweaks\u003c/li\u003e\n\u003cli\u003etests: Fix file permissions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003edevelop:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Use actions/checkout@v5 (was: v4)\u003c/li\u003e\n\u003cli\u003eCI: Use astral-sh/setup-uv action\u003c/li\u003e\n\u003cli\u003eCI: Add python 3.14.0-rc.1 (as experimental python version).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/5c4126ae3973b5c0a4107cd8b29f2b74993be330\"\u003e\u003ccode\u003e5c4126a\u003c/code\u003e\u003c/a\u003e setup.py/pyproject.toml: Disable setuptools-scm\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/cb115df7fdfad2dfb98bff950f23a6aebd575e96\"\u003e\u003ccode\u003ecb115df\u003c/code\u003e\u003c/a\u003e invoke:\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/562679afba6859a9fd89487abb88255de614004c\"\u003e\u003ccode\u003e562679a\u003c/code\u003e\u003c/a\u003e CI: Add python 3.14.0-rc.1 (as experimental python version).\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/4d408d8a6dec4ec190e8497721a1b57db581962b\"\u003e\u003ccode\u003e4d408d8\u003c/code\u003e\u003c/a\u003e setup.py/pyproject.toml: Update, correct and tweaks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/14c409e3c98c6c02ea143537ef6f54693513014f\"\u003e\u003ccode\u003e14c409e\u003c/code\u003e\u003c/a\u003e CI: Use actions/checkout@v5 (was: v4)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/4fa182eef7156a32da5ec3ffda6c7c4e66d28482\"\u003e\u003ccode\u003e4fa182e\u003c/code\u003e\u003c/a\u003e develop: Use uv w/ direnv to setup workspace and venv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/4e4cb772a88caab981eac3fda7fed9e67821beb5\"\u003e\u003ccode\u003e4e4cb77\u003c/code\u003e\u003c/a\u003e tests: Fix file permissions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/35096a3f1c8f1d02b2809a69a68f84fc8d39904b\"\u003e\u003ccode\u003e35096a3\u003c/code\u003e\u003c/a\u003e CI: Use astral-sh/setup-uv action\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/fdae4602ee39e949258146909535d337b4b0fb3f\"\u003e\u003ccode\u003efdae460\u003c/code\u003e\u003c/a\u003e CI: Add python 3.13.0-rc.3 (currently a pre-release).\u003c/li\u003e\n\u003cli\u003eSee ful...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-helm-charts/development/pull/494","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-helm-charts%2Fdevelopment/issues/494","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/494/packages"}},{"old_version":"1.6.4","new_version":"1.9.0","update_type":"minor","path":null,"pr_created_at":"2026-02-06T10:21:39.000Z","version_change":"1.6.4 → 1.9.0","issue":{"uuid":"3906028918","node_id":"PR_kwDOQf0FPs7B9XSO","number":27,"state":"closed","title":"chore(deps): bump the python-minor-patch group across 1 directory with 21 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-02-16T09:53:35.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-06T10:21:39.000Z","updated_at":"2026-02-16T09:53:36.000Z","time_to_close":862316,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor-patch","update_count":21,"packages":[{"name":"streamlit","old_version":"1.28.0","new_version":"1.50.0","repository_url":"https://github.com/streamlit/streamlit"},{"name":"python-dotenv","old_version":"1.0.0","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"fastapi","old_version":"0.110.0","new_version":"0.128.2","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.27.1","new_version":"0.39.0"},{"name":"scipy","old_version":"1.11.4","new_version":"1.13.1","repository_url":"https://github.com/scipy/scipy"},{"name":"scikit-learn","old_version":"1.4.0","new_version":"1.6.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"joblib","old_version":"1.3.2","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"anthropic","old_version":"0.18.1","new_version":"0.78.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"textblob","old_version":"0.17.1","new_version":"0.19.0","repository_url":"https://github.com/sloria/TextBlob"},{"name":"pydantic","old_version":"2.6.1","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.1.0","new_version":"2.11.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"python-jose","old_version":"3.3.0","new_version":"3.5.0"},{"name":"python-multipart","old_version":"0.0.6","new_version":"0.0.20","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"openpyxl","old_version":"3.1.2","new_version":"3.1.5"},{"name":"onnxruntime","old_version":"1.16.3","new_version":"1.20.1","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"httpx","old_version":"0.26.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"requests","old_version":"2.31.0","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"tokenizers","old_version":"0.15.1","new_version":"0.22.2","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"spacy","old_version":"3.7.2","new_version":"3.8.11","repository_url":"https://github.com/explosion/spaCy"},{"name":"websocket-client","old_version":"1.6.4","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"asyncio-mqtt","old_version":"0.13.0","new_version":"0.16.2","repository_url":"https://github.com/sbtinstruments/asyncio-mqtt"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 21 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.28.0` | `1.50.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.0` | `1.2.1` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.110.0` | `0.128.2` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.27.1` | `0.39.0` |\n| [scipy](https://github.com/scipy/scipy) | `1.11.4` | `1.13.1` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.4.0` | `1.6.1` |\n| [joblib](https://github.com/joblib/joblib) | `1.3.2` | `1.5.3` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `0.18.1` | `0.78.0` |\n| [textblob](https://github.com/sloria/TextBlob) | `0.17.1` | `0.19.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.6.1` | `2.12.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.1.0` | `2.11.0` |\n| [python-jose[cryptography]](https://github.com/mpdavis/python-jose) | `3.3.0` | `3.5.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.6` | `0.0.20` |\n| [openpyxl](https://openpyxl.readthedocs.io) | `3.1.2` | `3.1.5` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.16.3` | `1.20.1` |\n| [httpx](https://github.com/encode/httpx) | `0.26.0` | `0.28.1` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.32.5` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.15.1` | `0.22.2` |\n| [spacy](https://github.com/explosion/spaCy) | `3.7.2` | `3.8.11` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.6.4` | `1.9.0` |\n| [asyncio-mqtt](https://github.com/sbtinstruments/asyncio-mqtt) | `0.13.0` | `0.16.2` |\n\n\nUpdates `streamlit` from 1.28.0 to 1.50.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/streamlit/streamlit/releases\"\u003estreamlit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.50.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes 🛠\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: deprecate kwargs in st.plotly_chart and add config dict instead by \u003ca href=\"https://github.com/zyfy29\"\u003e\u003ccode\u003e@​zyfy29\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12291\"\u003estreamlit/streamlit#12291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.checkbox\u003c/code\u003e \u0026amp; \u003ccode\u003est.toggle\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12372\"\u003estreamlit/streamlit#12372\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003e**kwargs\u003c/code\u003e support from \u003ccode\u003est.write\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12375\"\u003estreamlit/streamlit#12375\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.number_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12437\"\u003estreamlit/streamlit#12437\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.text_area\u003c/code\u003e \u0026amp; \u003ccode\u003est.text_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12397\"\u003estreamlit/streamlit#12397\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eMultiselectColumn\u003c/code\u003e for \u003ccode\u003est.dataframe\u003c/code\u003e and \u003ccode\u003est.data_editor\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/9223\"\u003estreamlit/streamlit#9223\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for source directly in theming font configs by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12239\"\u003estreamlit/streamlit#12239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[feat] Add \u003ccode\u003edefault\u003c/code\u003e param to \u003ccode\u003est.tabs\u003c/code\u003e by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12313\"\u003estreamlit/streamlit#12313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eborder\u003c/code\u003e parameter to \u003ccode\u003est.table\u003c/code\u003e by \u003ca href=\"https://github.com/jrieke\"\u003e\u003ccode\u003e@​jrieke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/11796\"\u003estreamlit/streamlit#11796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[feat] Hover, active, focus-visible states for CopyButton by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12348\"\u003estreamlit/streamlit#12348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[AdvancedLayouts] Adds a width parameters to \u003ccode\u003est.line_chart\u003c/code\u003e. by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/11923\"\u003estreamlit/streamlit#11923\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd main theme color config options by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12288\"\u003estreamlit/streamlit#12288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for button widgets by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12332\"\u003estreamlit/streamlit#12332\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esort\u003c/code\u003e parameter to \u003ccode\u003est.bar_chart\u003c/code\u003e by \u003ca href=\"https://github.com/jrieke\"\u003e\u003ccode\u003e@​jrieke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12339\"\u003estreamlit/streamlit#12339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd theme background color config options by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12405\"\u003estreamlit/streamlit#12405\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd theme text color config options by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12438\"\u003estreamlit/streamlit#12438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.time_input\u003c/code\u003e \u0026amp; \u003ccode\u003est.date_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12464\"\u003estreamlit/streamlit#12464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[feat] Add sample rate parameter to \u003ccode\u003est.audio_input\u003c/code\u003e component by \u003ca href=\"https://github.com/sfc-gh-nbellante\"\u003e\u003ccode\u003e@​sfc-gh-nbellante\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12272\"\u003estreamlit/streamlit#12272\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMetric supports numerics like decimal. by \u003ca href=\"https://github.com/aebrahim\"\u003e\u003ccode\u003e@​aebrahim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12377\"\u003estreamlit/streamlit#12377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow slider tick labels on hover by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12367\"\u003estreamlit/streamlit#12367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[AdvancedLayouts] Add height param to \u003ccode\u003est.graphviz_chart\u003c/code\u003e by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12297\"\u003estreamlit/streamlit#12297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.selectbox\u003c/code\u003e \u0026amp; \u003ccode\u003est.multiselect\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12493\"\u003estreamlit/streamlit#12493\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport configuring the chart column colors by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12292\"\u003estreamlit/streamlit#12292\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix code usage in markdown labels by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12175\"\u003estreamlit/streamlit#12175\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Fullscreen behaviour for \u003ccode\u003est.image\u003c/code\u003e with use_container_width=True or width=\u0026quot;stretch\u0026quot; by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12235\"\u003estreamlit/streamlit#12235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] DateInput: normalize selected dates to start-of-day to honor max by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12295\"\u003estreamlit/streamlit#12295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure markdown images keep the aspect ratio by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12343\"\u003estreamlit/streamlit#12343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue with typing formatted values into \u003ccode\u003est.number_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12351\"\u003estreamlit/streamlit#12351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] \u003ccode\u003ehtml\u003c/code\u003e with float height.  by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12354\"\u003estreamlit/streamlit#12354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Share more code between Selectbox and Multiselect to align behavior by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12330\"\u003estreamlit/streamlit#12330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix logo pushing out collapse button by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12329\"\u003estreamlit/streamlit#12329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix long-words overflowing markdown container by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12370\"\u003estreamlit/streamlit#12370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MIME type for \u003ccode\u003e.mjs\u003c/code\u003e by \u003ca href=\"https://github.com/geoextra\"\u003e\u003ccode\u003e@​geoextra\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12399\"\u003estreamlit/streamlit#12399\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Pandas styler performance regression by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12422\"\u003estreamlit/streamlit#12422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Allow empty section pages in top navigation similar to how we do it for sidebar nav  by \u003ca href=\"https://github.com/nico-bellante\"\u003e\u003ccode\u003e@​nico-bellante\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12247\"\u003estreamlit/streamlit#12247\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] horizontal alignment of st.image in vertical containers by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12495\"\u003estreamlit/streamlit#12495\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Setting 0 for height/width on components.html and components.iframe .  by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12479\"\u003estreamlit/streamlit#12479\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix duckdb integration test by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12537\"\u003estreamlit/streamlit#12537\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert number input component refactoring by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12547\"\u003estreamlit/streamlit#12547\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd default main colors to theme by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12334\"\u003estreamlit/streamlit#12334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelease/1.49.0 by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12328\"\u003estreamlit/streamlit#12328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelease/1.49.1 by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12376\"\u003estreamlit/streamlit#12376\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/streamlit/streamlit/commit/52736534b6488da3bcb0c9d8bba855855a963678\"\u003e\u003ccode\u003e5273653\u003c/code\u003e\u003c/a\u003e Docstrings for 1.50.0 (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12605\"\u003e#12605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/f831f19024003fb0c0b3195c6150825deb7520fc\"\u003e\u003ccode\u003ef831f19\u003c/code\u003e\u003c/a\u003e Up version to 1.50.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/0ba383ec56e18df5e0efa8d62b8f00626dcfc128\"\u003e\u003ccode\u003e0ba383e\u003c/code\u003e\u003c/a\u003e [feat] Add Patch Release Branch Creation workflow (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12509\"\u003e#12509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/5abda776f6ee13a32ef8e5c5477205a73db1d593\"\u003e\u003ccode\u003e5abda77\u003c/code\u003e\u003c/a\u003e Support configuring the chart column colors (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12292\"\u003e#12292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/9d0e6bdcd383a52a75a12224c84f5e71d886e4a6\"\u003e\u003ccode\u003e9d0e6bd\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.selectbox\u003c/code\u003e \u0026amp; \u003ccode\u003est.multiselect\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12493\"\u003e#12493\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/53b2c4f741c5f3914015c0868e2169449b0735f9\"\u003e\u003ccode\u003e53b2c4f\u003c/code\u003e\u003c/a\u003e Fix pytest warning filter error (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12558\"\u003e#12558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/8608e83d9aadb5f79f03d7f9e817f9b12f24ad45\"\u003e\u003ccode\u003e8608e83\u003c/code\u003e\u003c/a\u003e Add support for new ruff rules (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12538\"\u003e#12538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/dec9d209fcdcfc2092ad5b7ab08ca79622936b5b\"\u003e\u003ccode\u003edec9d20\u003c/code\u003e\u003c/a\u003e Revert number input component refactoring (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12547\"\u003e#12547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/57fd06756fd59112c4247dbdb383ecf3affb2839\"\u003e\u003ccode\u003e57fd067\u003c/code\u003e\u003c/a\u003e [feat] Add Cherry-Pick to Release Branch automation (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12516\"\u003e#12516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/c5aa15cb69d8efe754b0b182f273d262d0f33849\"\u003e\u003ccode\u003ec5aa15c\u003c/code\u003e\u003c/a\u003e Update mypy requirement from \u0026lt;1.18,\u0026gt;=1.16.1 to \u0026gt;=1.16.1,\u0026lt;1.19 in /lib (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12551\"\u003e#12551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/streamlit/streamlit/compare/1.28.0...1.50.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.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 `fastapi` from 0.110.0 to 0.128.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.128.2\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for PEP695 \u003ccode\u003eTypeAliasType\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13920\"\u003e#13920\u003c/a\u003e by \u003ca href=\"https://github.com/cstruct\"\u003e\u003ccode\u003e@​cstruct\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Allow \u003ccode\u003eResponse\u003c/code\u003e type hint as dependency annotation. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14794\"\u003e#14794\u003c/a\u003e by \u003ca href=\"https://github.com/jonathan-fulton\"\u003e\u003ccode\u003e@​jonathan-fulton\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix using \u003ccode\u003eJson[list[str]]\u003c/code\u003e type (issue \u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/10997\"\u003e#10997\u003c/a\u003e). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14616\"\u003e#14616\u003c/a\u003e by \u003ca href=\"https://github.com/mkanetsuna\"\u003e\u003ccode\u003e@​mkanetsuna\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update docs for translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14830\"\u003e#14830\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Fix duplicate word in \u003ccode\u003eadvanced-dependencies.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14815\"\u003e#14815\u003c/a\u003e by \u003ca href=\"https://github.com/Rayyan-Oumlil\"\u003e\u003ccode\u003e@​Rayyan-Oumlil\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🌐 Enable Traditional Chinese translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14842\"\u003e#14842\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🌐 Enable French docs translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14841\"\u003e#14841\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 translations for fr (translate-page). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14837\"\u003e#14837\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 translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14836\"\u003e#14836\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 translations for pt (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14833\"\u003e#14833\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 translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14835\"\u003e#14835\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 translations for es (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14832\"\u003e#14832\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 translations for tr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14831\"\u003e#14831\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 translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14790\"\u003e#14790\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 translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14826\"\u003e#14826\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 translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14825\"\u003e#14825\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 translations for uk (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14822\"\u003e#14822\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 docs and translations scripts, enable Turkish. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14824\"\u003e#14824\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Add max pages to translate to configs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14840\"\u003e#14840\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.128.1\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eviewport\u003c/code\u003e meta tag to improve Swagger UI on mobile devices. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14777\"\u003e#14777\u003c/a\u003e by \u003ca href=\"https://github.com/Joab0\"\u003e\u003ccode\u003e@​Joab0\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🚸 Improve error message for invalid query parameter type annotations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14479\"\u003e#14479\u003c/a\u003e by \u003ca href=\"https://github.com/retwish\"\u003e\u003ccode\u003e@​retwish\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Update \u003ccode\u003eValidationError\u003c/code\u003e schema to include \u003ccode\u003einput\u003c/code\u003e and \u003ccode\u003ectx\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14791\"\u003e#14791\u003c/a\u003e by \u003ca href=\"https://github.com/jonathan-fulton\"\u003e\u003ccode\u003e@​jonathan-fulton\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Fix TYPE_CHECKING annotations for Python 3.14 (PEP 649). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14789\"\u003e#14789\u003c/a\u003e by \u003ca href=\"https://github.com/mgu\"\u003e\u003ccode\u003e@​mgu\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Strip whitespaces from \u003ccode\u003eAuthorization\u003c/code\u003e header credentials. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14786\"\u003e#14786\u003c/a\u003e by \u003ca href=\"https://github.com/WaveTheory1\"\u003e\u003ccode\u003e@​WaveTheory1\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Fix OpenAPI duplication of \u003ccode\u003eanyOf\u003c/code\u003e refs for app-level responses with specified \u003ccode\u003econtent\u003c/code\u003e and \u003ccode\u003emodel\u003c/code\u003e as \u003ccode\u003eUnion\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14463\"\u003e#14463\u003c/a\u003e by \u003ca href=\"https://github.com/DJMcoder\"\u003e\u003ccode\u003e@​DJMcoder\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/79406a4b04078155ccc03e2d48ca0799836cfb4b\"\u003e\u003ccode\u003e79406a4\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.128.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/de56c96c640dddb224c0088ed6d949efbf86d853\"\u003e\u003ccode\u003ede56c96\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/570e592a03c37c0436fea3727bd1be873417d9fb\"\u003e\u003ccode\u003e570e592\u003c/code\u003e\u003c/a\u003e 🌐 Enable Traditional Chinese translations (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14842\"\u003e#14842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/110b45d9b245d42a114a965bbd3039458afbf95e\"\u003e\u003ccode\u003e110b45d\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/72325f698f7ab55e7df2f7fc40cc52693eadd687\"\u003e\u003ccode\u003e72325f6\u003c/code\u003e\u003c/a\u003e 🌐 Enable French docs translations (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14841\"\u003e#14841\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8bdbd3725f7c88f3071ed9623da0945a269d3706\"\u003e\u003ccode\u003e8bdbd37\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/23ddf09dd197ba099edc1b06eba61f7fc20a5ade\"\u003e\u003ccode\u003e23ddf09\u003c/code\u003e\u003c/a\u003e 🔨 Add max pages to translate to configs (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14840\"\u003e#14840\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6646e2b94f13fe4145560d02cef05cfd3a6bc925\"\u003e\u003ccode\u003e6646e2b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c5fd75a321496b1f8212744bde217ec8ea956154\"\u003e\u003ccode\u003ec5fd75a\u003c/code\u003e\u003c/a\u003e 🐛 Fix using \u003ccode\u003eJson[list[str]]\u003c/code\u003e type (issue \u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/10997\"\u003e#10997\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14616\"\u003e#14616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/54f8aeeb9a15e4d5a12401ec5549840966df0087\"\u003e\u003ccode\u003e54f8aee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.110.0...0.128.2\"\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.27.1 to 0.39.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn[standard]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.39.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eexplicitly start ASGI run with empty context by \u003ca href=\"https://github.com/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2742\"\u003eKludex/uvicorn#2742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(websockets): Send close frame on ASGI return by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2769\"\u003eKludex/uvicorn#2769\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2742\"\u003eKludex/uvicorn#2742\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.38.0...0.39.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.38.0...0.39.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.38.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14 by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2723\"\u003eKludex/uvicorn#2723\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NGANAMODEIJunior\"\u003e\u003ccode\u003e@​NGANAMODEIJunior\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2713\"\u003eKludex/uvicorn#2713\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.37.0...0.38.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.37.0...0.38.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.37.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--timeout-worker-healthcheck\u003c/code\u003e setting by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2711\"\u003eKludex/uvicorn#2711\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eos.PathLike[str]\u003c/code\u003e type to \u003ccode\u003essl_ca_certs\u003c/code\u003e by \u003ca href=\"https://github.com/rnv812\"\u003e\u003ccode\u003e@​rnv812\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2676\"\u003eKludex/uvicorn#2676\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LincolnPuzey\"\u003e\u003ccode\u003e@​LincolnPuzey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2669\"\u003eKludex/uvicorn#2669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rnv812\"\u003e\u003ccode\u003e@​rnv812\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2676\"\u003eKludex/uvicorn#2676\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.36.1...0.37.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.36.1...0.37.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.36.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRaise an exception when calling removed \u003ccode\u003eConfig.setup_event_loop()\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2709\"\u003eKludex/uvicorn#2709\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.36.0...0.36.1\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.36.0...0.36.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.36.0\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport custom IOLOOPs by \u003ca href=\"https://github.com/gnir-work\"\u003e\u003ccode\u003e@​gnir-work\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2435\"\u003eKludex/uvicorn#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow to provide importable string in \u003ccode\u003e--http\u003c/code\u003e, \u003ccode\u003e--ws\u003c/code\u003e and \u003ccode\u003e--loop\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2658\"\u003eKludex/uvicorn#2658\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gnir-work\"\u003e\u003ccode\u003e@​gnir-work\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2435\"\u003eKludex/uvicorn#2435\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn[standard]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.39.0 (December 21, 2025)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSend close frame on ASGI return for WebSockets (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2769\"\u003e#2769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExplicitly start ASGI run with empty context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2742\"\u003e#2742\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.38.0 (October 18, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2723\"\u003e#2723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.37.0 (September 23, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--timeout-worker-healthcheck\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2711\"\u003e#2711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eos.PathLike[str]\u003c/code\u003e type to \u003ccode\u003essl_ca_certs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2676\"\u003e#2676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.36.1 (September 23, 2025)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaise an exception when calling removed \u003ccode\u003eConfig.setup_event_loop()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2709\"\u003e#2709\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.36.0 (September 20, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport custom IOLOOPs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2435\"\u003e#2435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow to provide importable string in \u003ccode\u003e--http\u003c/code\u003e, \u003ccode\u003e--ws\u003c/code\u003e and \u003ccode\u003e--loop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2658\"\u003e#2658\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.35.0 (June 28, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eWebSocketsSansIOProtocol\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2540\"\u003e#2540\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefine help message for option \u003ccode\u003e--proxy-headers\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2653\"\u003e#2653\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.34.3 (June 1, 2025)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't include \u003ccode\u003ecwd()\u003c/code\u003e when non-empty \u003ccode\u003e--reload-dirs\u003c/code\u003e is passed (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2598\"\u003e#2598\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eApply \u003ccode\u003eget_client_addr\u003c/code\u003e formatting to WebSocket logging (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2636\"\u003e#2636\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4f40b8495772eb3a1ab3613ffd7be5156f8e1389\"\u003e\u003ccode\u003e4f40b84\u003c/code\u003e\u003c/a\u003e Version 0.39.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2770\"\u003e#2770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5692dfc416f9e65aee5028e55d119313d8d3ab0f\"\u003e\u003ccode\u003e5692dfc\u003c/code\u003e\u003c/a\u003e fix(websockets): Send close frame on ASGI return (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2769\"\u003e#2769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4194764a26824e5d8ddd1fa673df78dff82966e0\"\u003e\u003ccode\u003e4194764\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2763\"\u003e#2763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/d94bf28743de545d2d4b150f022203a5178cb705\"\u003e\u003ccode\u003ed94bf28\u003c/code\u003e\u003c/a\u003e explicitly start ASGI run with empty context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2742\"\u003e#2742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/8ae0bcbecb0a655789abf0c2dd4200848fc68a30\"\u003e\u003ccode\u003e8ae0bcb\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2748\"\u003e#2748\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4744ff9a1a4888c76ea160328cc9dcc2680c2c71\"\u003e\u003ccode\u003e4744ff9\u003c/code\u003e\u003c/a\u003e Add groups configuration for GitHub Actions (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2747\"\u003e#2747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/0391372376c264604a0475b0864bcbf3a8705352\"\u003e\u003ccode\u003e0391372\u003c/code\u003e\u003c/a\u003e chore(deps): bump astral-sh/setup-uv from 6.8.0 to 7.1.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2746\"\u003e#2746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/69a6ae319801a5866ec07afdeb2ff3d912f4d3a0\"\u003e\u003ccode\u003e69a6ae3\u003c/code\u003e\u003c/a\u003e Improve typing in \u003ccode\u003etest_http.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2740\"\u003e#2740\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3850ad6520cafb290bd4174fa9c4ca5d33440c82\"\u003e\u003ccode\u003e3850ad6\u003c/code\u003e\u003c/a\u003e Version 0.38.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2733\"\u003e#2733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9b3f17a549ec96f57bf4d975145fc58feefdd4e8\"\u003e\u003ccode\u003e9b3f17a\u003c/code\u003e\u003c/a\u003e Support Python 3.14 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2723\"\u003e#2723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.27.1...0.39.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scipy` from 1.11.4 to 1.13.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scipy/scipy/releases\"\u003escipy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSciPy 1.13.1 Release Notes\u003c/h1\u003e\n\u003cp\u003eSciPy \u003ccode\u003e1.13.1\u003c/code\u003e is a bug-fix release with no new features\ncompared to \u003ccode\u003e1.13.0\u003c/code\u003e. The version of OpenBLAS shipped with\nthe PyPI binaries has been increased to \u003ccode\u003e0.3.27\u003c/code\u003e.\u003c/p\u003e\n\u003ch1\u003eAuthors\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eName (commits)\u003c/li\u003e\n\u003cli\u003eh-vetinari (1)\u003c/li\u003e\n\u003cli\u003eJake Bowhay (2)\u003c/li\u003e\n\u003cli\u003eEvgeni Burovski (6)\u003c/li\u003e\n\u003cli\u003eSean Cheah (2)\u003c/li\u003e\n\u003cli\u003eLucas Colley (2)\u003c/li\u003e\n\u003cli\u003eDWesl (2)\u003c/li\u003e\n\u003cli\u003eRalf Gommers (7)\u003c/li\u003e\n\u003cli\u003eBen Greiner (1) +\u003c/li\u003e\n\u003cli\u003eMatt Haberland (2)\u003c/li\u003e\n\u003cli\u003eGregory R. Lee (1)\u003c/li\u003e\n\u003cli\u003ePhilip Loche (1) +\u003c/li\u003e\n\u003cli\u003eSijo Valayakkad Manikandan (1) +\u003c/li\u003e\n\u003cli\u003eMatti Picus (1)\u003c/li\u003e\n\u003cli\u003eTyler Reddy (62)\u003c/li\u003e\n\u003cli\u003eAtsushi Sakai (1)\u003c/li\u003e\n\u003cli\u003eDaniel Schmitz (2)\u003c/li\u003e\n\u003cli\u003eDan Schult (3)\u003c/li\u003e\n\u003cli\u003eScott Shambaugh (2)\u003c/li\u003e\n\u003cli\u003eEdgar Andrés Margffoy Tuay (1)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eA total of 19 people contributed to this release.\nPeople with a \u0026quot;+\u0026quot; by their names contributed a patch for the first time.\nThis list of names is automatically generated, and may not be fully complete.\u003c/p\u003e\n\u003ch1\u003eSciPy 1.13.0 Release Notes\u003c/h1\u003e\n\u003cp\u003eSciPy \u003ccode\u003e1.13.0\u003c/code\u003e is the culmination of 3 months of hard work. This\nout-of-band release aims to support NumPy \u003ccode\u003e2.0.0\u003c/code\u003e, and is backwards\ncompatible to NumPy \u003ccode\u003e1.22.4\u003c/code\u003e. The version of OpenBLAS used to build\nthe PyPI wheels has been increased to \u003ccode\u003e0.3.26.dev\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis release requires Python 3.9+ and NumPy 1.22.4 or greater.\u003c/p\u003e\n\u003cp\u003eFor running on PyPy, PyPy3 6.0+ is required.\u003c/p\u003e\n\u003ch1\u003eHighlights of this release\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/44e4ebaac992fde33f04638b99629d23973cb9b2\"\u003e\u003ccode\u003e44e4eba\u003c/code\u003e\u003c/a\u003e REL: SciPy 1.13.1 release commit [wheel build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/2eb8e1b7380da0fada12ffd8d2c41f62dc74cb2e\"\u003e\u003ccode\u003e2eb8e1b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy/issues/20632\"\u003e#20632\u003c/a\u003e from tylerjereddy/treddy_prep_1_13_1_backports\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/1a00d4856bfcb5d6c3d6796ac8cd4278abae3016\"\u003e\u003ccode\u003e1a00d48\u003c/code\u003e\u003c/a\u003e DOC: PR 20632 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/11e99bad5812e5e1831553b5a901f5beea62dd1b\"\u003e\u003ccode\u003e11e99ba\u003c/code\u003e\u003c/a\u003e BUG: stats: Fix \u003ccode\u003ezipf.pmf\u003c/code\u003e and \u003ccode\u003ezipfian.pmf\u003c/code\u003e for int32 \u003ccode\u003ek\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scipy/scipy/issues/20702\"\u003e#20702\u003c/a\u003e) [wheel bu...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/506cbeb5c5e82e25bcc4c8e833f2bab8f60a0cd1\"\u003e\u003ccode\u003e506cbeb\u003c/code\u003e\u003c/a\u003e MAINT: stats.wilcoxon: fix bug with Ndim\u0026gt;1, shape[axis]\u0026gt;50, NaN, 'auto' (\u003ca href=\"https://redirect.github.com/scipy/scipy/issues/20592\"\u003e#20592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/c9d861396838f2fd05b300cc79bfea9fb40dddad\"\u003e\u003ccode\u003ec9d8613\u003c/code\u003e\u003c/a\u003e CI, MAINT: PR 20632 revisions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/95c50a4839bd5b4014c1d7ddde3f7a08d75d7134\"\u003e\u003ccode\u003e95c50a4\u003c/code\u003e\u003c/a\u003e MAINT: PR 20632 revisions [wheel build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/e7abaf1baad3db6788a980a858a4f74fb730ca31\"\u003e\u003ccode\u003ee7abaf1\u003c/code\u003e\u003c/a\u003e MAINT: PR 20632 revisions [wheel build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/aa32933aa03f277bfebdd6e86c267483c8cd750b\"\u003e\u003ccode\u003eaa32933\u003c/code\u003e\u003c/a\u003e CI: PR 20632 revisions [wheel build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/023b0fb7fb7b0e290a0a1b3739e9a041ee5d3c4b\"\u003e\u003ccode\u003e023b0fb\u003c/code\u003e\u003c/a\u003e CI: MR 20632 revisions\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scipy/scipy/compare/v1.11.4...v1.13.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scikit-learn` from 1.4.0 to 1.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scikit-learn/scikit-learn/releases\"\u003escikit-learn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eScikit-learn 1.6.1\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.6.1 release.\u003c/p\u003e\n\u003cp\u003eThis release contains fixes for a few regressions introduced in 1.6.\u003c/p\u003e\n\u003cp\u003eYou can see the changelog here: \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.6.html#version-1-6-1\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.6.html#version-1-6-1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThanks to everyone who contributed to this release !\u003c/p\u003e\n\u003ch2\u003eScikit-learn 1.6.0\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.6.0 release.\u003c/p\u003e\n\u003cp\u003eYou can read the release highlights under \u003ca href=\"https://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_6_0.html\"\u003ehttps://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_6_0.html\u003c/a\u003e and the long version of the change log under \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.6.html\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.6.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis version supports Python versions 3.9 to 3.13 and features an experimental support of free-threaded CPython.\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eScikit-learn 1.5.2\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.5.2 release.\u003c/p\u003e\n\u003cp\u003eThis release contains fixes for a few regressions introduced in 1.5.\u003c/p\u003e\n\u003cp\u003eYou can see the changelog here: \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.5.html#version-1-5-2\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.5.html#version-1-5-2\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/f159b78dc59f250cdde8fe391a21f0bc871960ad\"\u003e\u003ccode\u003ef159b78\u003c/code\u003e\u003c/a\u003e trigger wheel builder [cd build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/73cca70befaa3167903f1fbe15e81df587598f11\"\u003e\u003ccode\u003e73cca70\u003c/code\u003e\u003c/a\u003e generate changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/afaa07062bfd77c5ec15cfc62f0102c257092563\"\u003e\u003ccode\u003eafaa070\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/1f43fd2307c13593ea5ba194dcc5e7a814cfade9\"\u003e\u003ccode\u003e1f43fd2\u003c/code\u003e\u003c/a\u003e DOC: Updates to Macro vs micro-averaging in plot_roc.py (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/29845\"\u003e#29845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/ea8a7259f53c2cd78c1a8341bdab228e621dd2ba\"\u003e\u003ccode\u003eea8a725\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for main CI build(s) :lock: :robot: (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/30593\"\u003e#30593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/bc291f1030aa4f122187d5334a426ab1848a7ee6\"\u003e\u003ccode\u003ebc291f1\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for scipy-dev CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/f5f2b9c7b725a957caf8089d254f9176e8fabda9\"\u003e\u003ccode\u003ef5f2b9c\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for free-threaded CI build(s) :lock: :rob...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/acbb8621c816f12f0648f175edf8acb561768ec5\"\u003e\u003ccode\u003eacbb862\u003c/code\u003e\u003c/a\u003e TST Fix doctest due to GradientBoostingClassifier difference with scipy 1.15 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/42831e522f9f08f34e01cd85d60aa852914b135d\"\u003e\u003ccode\u003e42831e5\u003c/code\u003e\u003c/a\u003e FIX warn if an estimator does have a concrete \u003cstrong\u003esklearn_tags\u003c/strong\u003e implementation...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/0d2ce432de05b1f0c3b055572c08bee332c37724\"\u003e\u003ccode\u003e0d2ce43\u003c/code\u003e\u003c/a\u003e FIX change FutureWarnings to DeprecationWarnings for the tags (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/30573\"\u003e#30573\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scikit-learn/scikit-learn/compare/1.4.0...1.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `joblib` from 1.3.2 to 1.5.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joblib/joblib/releases\"\u003ejoblib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.3\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003e1.5.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003e1.4.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTST add a test that ensures conservation of byte order during IPC by \u003ca href=\"https://github.com/fcharras\"\u003e\u003ccode\u003e@​fcharras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1562\"\u003ejoblib/joblib#1562\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC fix typos in CHANGES.rst by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1571\"\u003ejoblib/joblib#1571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC typo in docs by \u003ca href=\"https://github.com/jmerkow\"\u003e\u003ccode\u003e@​jmerkow\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1574\"\u003ejoblib/joblib#1574\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFIX revert MemorizedFunc.call API change by \u003ca href=\"https://github.com/tomMoral\"\u003e\u003ccode\u003e@​tomMoral\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1576\"\u003ejoblib/joblib#1576\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/jmerkow\"\u003e\u003ccode\u003e@​jmerkow\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1574\"\u003ejoblib/joblib#1574\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/joblib/joblib/compare/1.4.0...1.4.2\"\u003ehttps://github.com/joblib/joblib/compare/1.4.0...1.4.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eJoblib 1.4.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFIX raise iterator exception in user's thread by \u003ca href=\"https://github.com/tomMoral\"\u003e\u003ccode\u003e@​tomMoral\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1491\"\u003ejoblib/joblib#1491\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: Update byte_bounds import by \u003ca href=\"https://github.com/mtsokol\"\u003e\u003ccode\u003e@​mtsokol\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1501\"\u003ejoblib/joblib#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFEA Implement generator unordered parameter by \u003ca href=\"https://github.com/fcharras\"\u003e\u003ccode\u003e@​fcharras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1463\"\u003ejoblib/joblib#1463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: Cleanup expired ndarray methods by \u003ca href=\"https://github.com/mtsokol\"\u003e\u003ccode\u003e@​mtsokol\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1506\"\u003ejoblib/joblib#1506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix README cloning url by \u003ca href=\"https://github.com/andreaso\"\u003e\u003ccode\u003e@​andreaso\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1508\"\u003ejoblib/joblib#1508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix README archive download link by \u003ca href=\"https://github.com/andreaso\"\u003e\u003ccode\u003e@​andreaso\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1509\"\u003ejoblib/joblib#1509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrefer \u003ca href=\"https://\"\u003ehttps://\u003c/a\u003e links in the documentation by \u003ca href=\"https://github.com/andreaso\"\u003e\u003ccode\u003e@​andreaso\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1510\"\u003ejoblib/joblib#1510\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStricter Dask tests cleanup by \u003ca href=\"https://github.com/ogrisel\"\u003e\u003ccode\u003e@​ogrisel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1514\"\u003ejoblib/joblib#1514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLN simplify code for easier read by \u003ca href=\"https://github.com/tomMoral\"\u003e\u003ccode\u003e@​tomMoral\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1517\"\u003ejoblib/joblib#1517\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVendor cloudpickle 3.0.0 and drop support for Python 3.7. by \u003ca href=\"https://github.com/ogrisel\"\u003e\u003ccode\u003e@​ogrisel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1515\"\u003ejoblib/joblib#1515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMNT Fix Python 3.12 deprecation warning by \u003ca href=\"https://github.com/lesteve\"\u003e\u003ccode\u003e@​lesteve\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1518\"\u003ejoblib/joblib#1518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFIX \u003ccode\u003e_get_items_to_delete\u003c/code\u003e raising error when items list empty by \u003ca href=\"https://github.com/Dr-Blank\"\u003e\u003ccode\u003e@​Dr-Blank\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1503\"\u003ejoblib/joblib#1503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dask backend for compatibility with return_as=generator by \u003ca href=\"https://github.com/fcharras\"\u003e\u003ccode\u003e@​fcharras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1520\"\u003ejoblib/joblib#1520\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: Best randomness with Parallel generators by \u003ca href=\"https://github.com/paquiteau\"\u003e\u003ccode\u003e@​paquiteau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1490\"\u003ejoblib/joblib#1490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMTN update ci pipelines to use python3.8 + test more pypy versions by \u003ca href=\"https://github.com/fcharras\"\u003e\u003ccode\u003e@​fcharras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1487\"\u003ejoblib/joblib#1487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMNT Restart readthedoc pipeline by \u003ca href=\"https://github.com/fcharras\"\u003e\u003ccode\u003e@​fcharras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1524\"\u003ejoblib/joblib#1524\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFIX Close cleanly distributed Client at the end of unit tests by \u003ca href=\"https://github.com/fcharras\"\u003e\u003ccode\u003e@​fcharras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1526\"\u003ejoblib/joblib#1526\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd pytest 8.x compatability by \u003ca href=\"https://github.com/mr-c\"\u003e\u003ccode\u003e@​mr-c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1553\"\u003ejoblib/joblib#1553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003en_jobs parameter in instantiation of Parallel should be an integer by \u003ca href=\"https://github.com/androids-electric-sheep\"\u003e\u003ccode\u003e@​androids-electric-sheep\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1549\"\u003ejoblib/joblib#1549\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC : updated n_jobs docs in Parallel class by \u003ca href=\"https://github.com/Schefflera-Arboricola\"\u003e\u003ccode\u003e@​Schefflera-Arboricola\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1537\"\u003ejoblib/joblib#1537\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI Fix url for scikit-learn nightly builds by \u003ca href=\"https://github.com/jeremiedbb\"\u003e\u003ccode\u003e@​jeremiedbb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1567\"\u003ejoblib/joblib#1567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eENH allow caching coroutine functions by \u003ca href=\"https://github.com/gsakkis\"\u003e\u003ccode\u003e@​gsakkis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/894\"\u003ejoblib/joblib#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC consistent default formating in doc by \u003ca href=\"https://github.com/tomMoral\"\u003e\u003ccode\u003e@​tomMoral\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1565\"\u003ejoblib/joblib#1565\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC add gotcha on non-reproducible pickling by \u003ca href=\"https://github.com/tomMoral\"\u003e\u003ccode\u003e@​tomMoral\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1566\"\u003ejoblib/joblib#1566\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/joblib/joblib/blob/main/CHANGES.rst\"\u003ejoblib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 1.5.3 - 2025/12/15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003eMemory\u003c/code\u003e object won't overwrite an already existing \u003ccode\u003e.gitignore\u003c/code\u003e file in its\ncache directory anymore.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1742\"\u003ejoblib/joblib#1742\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHarden the safety checks in \u003ccode\u003eeval_expr(pre_dispatch)\u003c/code\u003e to prevent excessive\nmemory allocation and potential crashes by limiting the allowed length of the\nexpression and the maximum numeric value of sub-expressions and not\nevaluating expressions with non-numeric literals.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1744\"\u003ejoblib/joblib#1744\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVendor cloudpickle 3.1.2 to fix a pickling problem with interactively\ndefined abstract base classes and type annotations in Python 3.14+.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 1.5.2 - 2025/08/27\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVendor \u003ccode\u003eloky3.5.6\u003c/code\u003e fixing the resource tracker for python 3.13.7+\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1740\"\u003ejoblib/joblib#1740\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMemory:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Ensure that temporary files managed by the ``Memory`` object do not collide\n  when using the same cache directory when the cache directory is accessed\n  concurrently from different nodes on a cluster with a shared filesystem.\n  https://github.com/joblib/joblib/pull/1656\n\u003ch2\u003eRelease 1.5.1 - 2025/05/23\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix backend hints causing errors when no multiprocessing is present\u003cbr /\u003e\n\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1721\"\u003ejoblib/joblib#1721\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVendor \u003ccode\u003eloky3.5.5\u003c/code\u003e fixing the resource_tracker clean up with earlier Python\u003cbr /\u003e\nversions. \u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1724\"\u003ejoblib/joblib#1724\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 1.5.0 -- 2025/05/03\u003c/h2\u003e\n\u003cp\u003eMemory:\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eEnforce \u003ccode\u003eage_limit\u003c/code\u003e is a positive timedelta for \u003ccode\u003eMemory.reduce_size\u003c/code\u003e,\nto avoid silently ignoring it.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1613\"\u003ejoblib/joblib#1613\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove deprecated \u003ccode\u003ebytes_limit\u003c/code\u003e argument for \u003ccode\u003eMemory\u003c/code\u003e, which should\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/40cd002ae1765195dfc4738a6bc7f5534b420a21\"\u003e\u003ccode\u003e40cd002\u003c/code\u003e\u003c/a\u003e RELEASE 1.5.3 (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1765\"\u003e#1765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/f05be6705e0f56856b76d76fecdddab95de394c8\"\u003e\u003ccode\u003ef05be67\u003c/code\u003e\u003c/a\u003e MNT Remove last usage of distutils (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1760\"\u003e#1760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/4273f396b7fb66da7f72f603a6bf6651393c5be1\"\u003e\u003ccode\u003e4273f39\u003c/code\u003e\u003c/a\u003e MNT bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1762\"\u003e#1762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/f465f0245d20c1e793d98b8071a9604623ffd528\"\u003e\u003ccode\u003ef465f02\u003c/code\u003e\u003c/a\u003e FIX don't overwrite existing .gitignore (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1742\"\u003e#1742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/cca7d87a94a1bd141c6c505a909becd4c1854fde\"\u003e\u003ccode\u003ecca7d87\u003c/code\u003e\u003c/a\u003e MNT bump sklearn test on python 3.12 (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1759\"\u003e#1759\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/f7775ad30051d95d83da76125b176962989bf763\"\u003e\u003ccode\u003ef7775ad\u003c/code\u003e\u003c/a\u003e MNT remove deprecated pytest feature (\u003ca href=\"https://redirect.github.com/joblib/joblib/iss...\n\n_Description has been truncated_","html_url":"https://github.com/ChunkyTortoise/EnterpriseHub/pull/27","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChunkyTortoise%2FEnterpriseHub/issues/27","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/27/packages"}},{"old_version":"1.5.1","new_version":"1.9.0","update_type":"minor","path":"/api","pr_created_at":"2026-02-02T19:27:30.000Z","version_change":"1.5.1 → 1.9.0","issue":{"uuid":"3887544515","node_id":"PR_kwDOKqBlQc7A_6RM","number":171,"state":"closed","title":"chore(deps): bump the pip group in /api with 38 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-03T17:08:25.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-02T19:27:30.000Z","updated_at":"2026-02-03T17:08:27.000Z","time_to_close":78055,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"pip","update_count":38,"packages":[{"name":"apscheduler","old_version":"3.10.4","new_version":"3.11.2","repository_url":"https://github.com/agronholm/apscheduler"},{"name":"azure-identity","old_version":"1.16.1","new_version":"1.25.1","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-storage-blob","old_version":"12.14.1","new_version":"12.28.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"chardet","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/chardet/chardet"},{"name":"elastic-apm","old_version":"6.23.0","new_version":"6.25.0","repository_url":"https://github.com/elastic/apm-agent-python"},{"name":"elasticsearch","old_version":"8.6.1","new_version":"8.19.3","repository_url":"https://github.com/elastic/elasticsearch-py"},{"name":"flask","old_version":"2.2.5","new_version":"2.3.3","repository_url":"https://github.com/pallets/flask"},{"name":"flask-caching","old_version":"2.0.2","new_version":"2.3.1","repository_url":"https://github.com/pallets-eco/flask-caching"},{"name":"prometheus-client","old_version":"0.17.1","new_version":"0.24.1","repository_url":"https://github.com/prometheus/client_python"},{"name":"pyjwt","old_version":"2.6.0","new_version":"2.11.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"redis","old_version":"4.5.4","new_version":"4.6.0","repository_url":"https://github.com/redis/redis-py"},{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"pysigma","old_version":"0.11.17","new_version":"0.11.23","repository_url":"https://github.com/SigmaHQ/pySigma"},{"name":"pysigma-backend-elasticsearch","old_version":"1.1.5","new_version":"1.1.6","repository_url":"https://github.com/SigmaHQ/pySigma-backend-elasticsearch"},{"name":"validators","old_version":"0.34.0","new_version":"0.35.0","repository_url":"https://github.com/python-validators/validators"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pydantic","old_version":"2.11.4","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.9.1","new_version":"2.11.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydash","old_version":"8.0.5","new_version":"8.0.6","repository_url":"https://github.com/dgilland/pydash"},{"name":"flake8","old_version":"7.2.0","new_version":"7.3.0","repository_url":"https://github.com/pycqa/flake8"},{"name":"retrying","old_version":"1.3.3","new_version":"1.4.2","repository_url":"https://github.com/groodt/retrying"},{"name":"pyftpdlib","old_version":"1.5.7","new_version":"1.5.10","repository_url":"https://github.com/giampaolo/pyftpdlib"},{"name":"mypy","old_version":"1.6.1","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mock","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/testing-cabal/mock"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"coverage","old_version":"7.4.0","new_version":"7.10.7","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"ruff","old_version":"0.8.6","new_version":"0.14.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-pyyaml","old_version":"6.0.12.12","new_version":"6.0.12.20250915","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-paramiko","old_version":"3.3.0.0","new_version":"3.5.0.20250801","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-pyopenssl","old_version":"23.3.0.0","new_version":"23.3.0.20240106","repository_url":"https://github.com/python/typeshed"},{"name":"types-redis","old_version":"4.6.0.9","new_version":"4.6.0.20241004","repository_url":"https://github.com/python/typeshed"},{"name":"types-six","old_version":"1.16.21.9","new_version":"1.17.0.20251009","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-requests","old_version":"2.31.0.6","new_version":"2.32.4.20260107","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"websocket-client","old_version":"1.5.1","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"types-mock","old_version":"5.2.0.20250306","new_version":"5.2.0.20250924","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"rich","old_version":"14.2.0","new_version":"14.3.2","repository_url":"https://github.com/Textualize/rich"}],"path":"/api","ecosystem":"pip"},"body":"Bumps the pip group in /api with 38 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [apscheduler](https://github.com/agronholm/apscheduler) | `3.10.4` | `3.11.2` |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.16.1` | `1.25.1` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.14.1` | `12.28.0` |\n| [chardet](https://github.com/chardet/chardet) | `5.1.0` | `5.2.0` |\n| [elastic-apm](https://github.com/elastic/apm-agent-python) | `6.23.0` | `6.25.0` |\n| [elasticsearch](https://github.com/elastic/elasticsearch-py) | `8.6.1` | `8.19.3` |\n| [flask](https://github.com/pallets/flask) | `2.2.5` | `2.3.3` |\n| [flask-caching](https://github.com/pallets-eco/flask-caching) | `2.0.2` | `2.3.1` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.17.1` | `0.24.1` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.6.0` | `2.11.0` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [redis](https://github.com/redis/redis-py) | `4.5.4` | `4.6.0` |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [pysigma](https://github.com/SigmaHQ/pySigma) | `0.11.17` | `0.11.23` |\n| [pysigma-backend-elasticsearch](https://github.com/SigmaHQ/pySigma-backend-elasticsearch) | `1.1.5` | `1.1.6` |\n| [validators](https://github.com/python-validators/validators) | `0.34.0` | `0.35.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.2.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.12.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.9.1` | `2.11.0` |\n| [pydash](https://github.com/dgilland/pydash) | `8.0.5` | `8.0.6` |\n| [flake8](https://github.com/pycqa/flake8) | `7.2.0` | `7.3.0` |\n| [retrying](https://github.com/groodt/retrying) | `1.3.3` | `1.4.2` |\n| [pyftpdlib](https://github.com/giampaolo/pyftpdlib) | `1.5.7` | `1.5.10` |\n| [mypy](https://github.com/python/mypy) | `1.6.1` | `1.19.1` |\n| [mock](https://github.com/testing-cabal/mock) | `5.1.0` | `5.2.0` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.4.0` | `7.10.7` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.8.6` | `0.14.14` |\n| [types-pyyaml](https://github.com/typeshed-internal/stub_uploader) | `6.0.12.12` | `6.0.12.20250915` |\n| [types-paramiko](https://github.com/typeshed-internal/stub_uploader) | `3.3.0.0` | `3.5.0.20250801` |\n| [types-pyopenssl](https://github.com/python/typeshed) | `23.3.0.0` | `23.3.0.20240106` |\n| [types-redis](https://github.com/python/typeshed) | `4.6.0.9` | `4.6.0.20241004` |\n| [types-six](https://github.com/typeshed-internal/stub_uploader) | `1.16.21.9` | `1.17.0.20251009` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.31.0.6` | `2.32.4.20260107` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.5.1` | `1.9.0` |\n| [types-mock](https://github.com/typeshed-internal/stub_uploader) | `5.2.0.20250306` | `5.2.0.20250924` |\n| [rich](https://github.com/Textualize/rich) | `14.2.0` | `14.3.2` |\n\nUpdates `apscheduler` from 3.10.4 to 3.11.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/apscheduler/releases\"\u003eapscheduler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where a job using a \u003ccode\u003eCronTrigger\u003c/code\u003e scheduled in a repeated time interval during DST transitions could cause the scheduler to get stuck in an infinite loop (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1021\"\u003e#1021\u003c/a\u003e; PR by \u003ca href=\"https://github.com/soulofakuma\"\u003e\u003ccode\u003e@​soulofakuma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003escheduler.shutdown()\u003c/code\u003e not raising \u003ccode\u003eSchedulerNotRunning\u003c/code\u003e (or raising the wrong exception) for asynchronous schedulers when the scheduler is in fact not running\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCronTrigger\u003c/code\u003e sticking on a folded datetime during the fall-back DST transition (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1021\"\u003e#1021\u003c/a\u003e \u0026lt;\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1021\"\u003eagronholm/apscheduler#1021\u003c/a\u003e\u0026gt;_; PR by \u003ca href=\"https://github.com/berianjames\"\u003e\u003ccode\u003e@​berianjames\u003c/code\u003e\u003c/a\u003e)`\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.6 and 3.7\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eZoneInfo\u003c/code\u003e time zones and deprecated support for pytz time zones\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCalendarIntervalTrigger\u003c/code\u003e, backported from the 4.x series\u003c/li\u003e\n\u003cli\u003eAdded the ability to export and import jobs via \u003ccode\u003escheduler.export_jobs()\u003c/code\u003e and \u003ccode\u003escheduler.import_jobs()\u003c/code\u003e, respectively\u003c/li\u003e\n\u003cli\u003eRemoved the dependency on \u003ccode\u003esix\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eProcessPoolExecutor\u003c/code\u003e to spawn new subprocesses from scratch instead of forking on all platform\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eAsyncIOScheduler\u003c/code\u003e inadvertently creating a defunct event loop at start, leading to the scheduler not working at all\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcessPoolExecutor\u003c/code\u003e not respecting the passed keyword arguments when a broken pool was being replaced\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/0f70950e320f3a7924dcd404c6c379143fb68b23\"\u003e\u003ccode\u003e0f70950\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/bc404e63af18bd8e493e0765f2ad0b51e6df0ef1\"\u003e\u003ccode\u003ebc404e6\u003c/code\u003e\u003c/a\u003e Updated publish actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/c3aa155bd39fe54639d69b396f9ad720246f0c98\"\u003e\u003ccode\u003ec3aa155\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/ad6b2dc766cd6722c8aa51543f988b9ee7b13110\"\u003e\u003ccode\u003ead6b2dc\u003c/code\u003e\u003c/a\u003e Added fix for get_next_fire_time not advancing through fold with unfolded pre...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/f4df139771b7741f58f0eb456f091d3f659555c1\"\u003e\u003ccode\u003ef4df139\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/25be7b77afca892d152441d4a61402623af7f943\"\u003e\u003ccode\u003e25be7b7\u003c/code\u003e\u003c/a\u003e Fixed CronTrigger getting stuck on fallback DST transition (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1079\"\u003e#1079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/12613862e34456215dc98574f6cf594f77d66f47\"\u003e\u003ccode\u003e1261386\u003c/code\u003e\u003c/a\u003e Updated etcd image repository name\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/b1f5636ccaf6a2fe86b208d7bd6b43024a1546b3\"\u003e\u003ccode\u003eb1f5636\u003c/code\u003e\u003c/a\u003e Fixed shutdown() not raising the correct exception for some schedulers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/6c72a51416893eb0eebbe63d0f2a0151952cab59\"\u003e\u003ccode\u003e6c72a51\u003c/code\u003e\u003c/a\u003e Backported release job from master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/4b965109548e528c061cf32b672de1a6f65f2c2a\"\u003e\u003ccode\u003e4b96510\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/apscheduler/compare/3.10.4...3.11.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `azure-identity` from 1.16.1 to 1.25.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/dbf147506014177ceb85ca4cf5e90eef5a5d4660\"\u003e\u003ccode\u003edbf1475\u003c/code\u003e\u003c/a\u003e [Identity] Update changelog (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/43249\"\u003e#43249\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/949e5b8d351d97b1abafb3fda49880bf2aaf401d\"\u003e\u003ccode\u003e949e5b8\u003c/code\u003e\u003c/a\u003e Added response hook to replace throughput (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/43243\"\u003e#43243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/65f6f1ac22eca4f5b3218279c73cc1e6568b29f3\"\u003e\u003ccode\u003e65f6f1a\u003c/code\u003e\u003c/a\u003e Rename Path Efficiency to Task Navigation Efficiency Evaluator and Return Onl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/772ee5ad10ad7f4867044ea39ce516f9dd3cc5bc\"\u003e\u003ccode\u003e772ee5a\u003c/code\u003e\u003c/a\u003e Rename Tool Call Accuracy Evaluator to Tool Call Quality (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/43246\"\u003e#43246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/05f1eae0b18abc85f5ffb759f943268dac9e06c5\"\u003e\u003ccode\u003e05f1eae\u003c/code\u003e\u003c/a\u003e Rename Task Success Evaluator to Task Completion Evaluator (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/43190\"\u003e#43190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/07395dd0dbdc75b25f5fc2ac8ff82a8824b5a90f\"\u003e\u003ccode\u003e07395dd\u003c/code\u003e\u003c/a\u003e [Identity] Skip IMDS probe when MI selected in DAC via env (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/43080\"\u003e#43080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/b0ec83c3f0ad69dd40aaf7e2c832616ea01060fc\"\u003e\u003ccode\u003eb0ec83c\u003c/code\u003e\u003c/a\u003e Revert behavior change introduced in \u003ca href=\"https://github.com/Azure/azure-sdk-tools\"\u003ehttps://github.com/Azure/azure-sdk-tools\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/33bbf3517faa8e0b285faa1b3b7241c00c50e7a8\"\u003e\u003ccode\u003e33bbf35\u003c/code\u003e\u003c/a\u003e [Identity] Improve MI error messages (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/43231\"\u003e#43231\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/f837589b09b3f37f3576ee4c752db56e9a281a81\"\u003e\u003ccode\u003ef837589\u003c/code\u003e\u003c/a\u003e update verifywhl to check that one of homepage/repository exists (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/43188\"\u003e#43188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/befebbf01f86e85a12b5f9a16adc3d2c5175703c\"\u003e\u003ccode\u003ebefebbf\u003c/code\u003e\u003c/a\u003e update pinned apistub version 0.3.23 (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/43237\"\u003e#43237\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.16.1...azure-identity_1.25.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `azure-storage-blob` from 12.14.1 to 12.28.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/releases\"\u003eazure-storage-blob's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eazure-storage-blob_12.28.0\u003c/h2\u003e\n\u003ch2\u003e12.28.0 (2026-01-06)\u003c/h2\u003e\n\u003ch3\u003eFeatures Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStable release of features from 12.28.0b1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eChanged the default \u003ccode\u003econnection_data_block_size\u003c/code\u003e for all clients from 4 KiB to 256 KiB. This should result in\nsignificantly better throughput on large file downloads for most environments.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eazure-storage-blob_12.28.0b1\u003c/h2\u003e\n\u003ch2\u003e12.28.0b1 (2025-12-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for service version 2026-02-06.\u003c/li\u003e\n\u003cli\u003eAdded support for the keywords \u003ccode\u003eif_modified_since\u003c/code\u003e, \u003ccode\u003eif_unmodified_since\u003c/code\u003e, \u003ccode\u003eetag\u003c/code\u003e, and \u003ccode\u003ematch_condition\u003c/code\u003e to\nconditionally perform \u003ccode\u003eBlobClient\u003c/code\u003e's \u003ccode\u003eset_blob_tags\u003c/code\u003e and \u003ccode\u003eget_blob_tags\u003c/code\u003e operations.\u003c/li\u003e\n\u003cli\u003eAdded support for the keyword \u003ccode\u003estart_from\u003c/code\u003e in \u003ccode\u003eContainerClient\u003c/code\u003e's \u003ccode\u003elist_blobs\u003c/code\u003e, \u003ccode\u003elist_blob_names\u003c/code\u003e, and \u003ccode\u003ewalk_blobs\u003c/code\u003e\nAPIs, which specifies the full path to start listing paths from.\u003c/li\u003e\n\u003cli\u003eAdded support for the keyword \u003ccode\u003euser_delegation_oid\u003c/code\u003e to \u003ccode\u003egenerate_blob_sas\u003c/code\u003e and \u003ccode\u003egenerate_container_sas\u003c/code\u003e, which\nspecifies the Entra ID of the user that is authorized to use the generated SAS URL.\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eUseDevelopmentStorage=true;\u003c/code\u003e as a valid connection string for Azurite.\u003c/li\u003e\n\u003cli\u003eAdded the ability to skip auto decompression on \u003ccode\u003eBlobClient.download_blob\u003c/code\u003e via the \u003ccode\u003edecompress\u003c/code\u003e keyword.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/b3301acbed95d1e11f8ab859eced5292627c763a\"\u003e\u003ccode\u003eb3301ac\u003c/code\u003e\u003c/a\u003e STG 100 GA Release Date for 2026-01-06\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/beb8dfaad1420c54288adb8e0ceb468cff144a70\"\u003e\u003ccode\u003ebeb8dfa\u003c/code\u003e\u003c/a\u003e [Storage][STG 100] Prepare branch for GA + cherry-pick block size change (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/44\"\u003e#44\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/874cfcf701ccc2a2ef9a3444fe0563ce2efdc058\"\u003e\u003ccode\u003e874cfcf\u003c/code\u003e\u003c/a\u003e [Storage] Update Swagger and Release Date (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/44243\"\u003e#44243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/4aca0cc83494e1fe243a21d31af357acf60160be\"\u003e\u003ccode\u003e4aca0cc\u003c/code\u003e\u003c/a\u003e Fix perf tests on Python 3.14 + Storage change (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/44230\"\u003e#44230\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/cd5ecc5c0e05c1deeb4b74f72d85f01418e5d27c\"\u003e\u003ccode\u003ecd5ecc5\u003c/code\u003e\u003c/a\u003e [Storage] Fix 100 Live Tests (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/44108\"\u003e#44108\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/1cd78b1c3dbc5acb2a40d81cf4d3587783a187eb\"\u003e\u003ccode\u003e1cd78b1\u003c/code\u003e\u003c/a\u003e [Storage] Added support for Python 3.14 + update 100 release date (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/44224\"\u003e#44224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/471cda17da08c0320c12c4f2ee30becaaec94a7a\"\u003e\u003ccode\u003e471cda1\u003c/code\u003e\u003c/a\u003e [Storage] Add Blob download perf test that uses HTTP library directly (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/44111\"\u003e#44111\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/9e53510dc0e1acfdbbf418174f656fac5025ea92\"\u003e\u003ccode\u003e9e53510\u003c/code\u003e\u003c/a\u003e [Storage] Decompression for Binary Response in Download APIs (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/43587\"\u003e#43587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/68b646be00366dc3f9157065eccf55dd0c7c21b2\"\u003e\u003ccode\u003e68b646b\u003c/code\u003e\u003c/a\u003e Removed create file with data and file semantics features (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/43978\"\u003e#43978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/09f0066bee9b717da6e15aa5fc2183e3490fe7f1\"\u003e\u003ccode\u003e09f0066\u003c/code\u003e\u003c/a\u003e [Storage] Added Support for \u003ccode\u003eUseDevelopmentStorage=true;\u003c/code\u003e for Connection Stri...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/compare/azure-storage-blob_12.14.1...azure-storage-blob_12.28.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chardet` from 5.1.0 to 5.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chardet/chardet/releases\"\u003echardet's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003echardet 5.2.0\u003c/h2\u003e\n\u003cp\u003eAdds support for running chardet CLI via \u003ccode\u003epython -m chardet\u003c/code\u003e (0e9b7bc20366163efcc221281201baff4100fe19, \u003ca href=\"https://github.com/dan-blanchard\"\u003e\u003ccode\u003e@​dan-blanchard\u003c/code\u003e\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/chardet/chardet/commit/78250d917a2883aa60215c04480aeb27a545f1d9\"\u003e\u003ccode\u003e78250d9\u003c/code\u003e\u003c/a\u003e Bump version to 5.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/0e9b7bc20366163efcc221281201baff4100fe19\"\u003e\u003ccode\u003e0e9b7bc\u003c/code\u003e\u003c/a\u003e Add \u003cstrong\u003emain\u003c/strong\u003e module to support python -m chardet\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/0649ffe20fb3fa435f0a0e01445e6ead6cc672ee\"\u003e\u003ccode\u003e0649ffe\u003c/code\u003e\u003c/a\u003e Bump version to 5.2.0dev0\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/chardet/chardet/compare/5.1.0...5.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `elastic-apm` from 6.23.0 to 6.25.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/elastic/apm-agent-python/releases\"\u003eelastic-apm's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.25.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIntroduce \u003ccode\u003eELASTIC_APM_SKIP_SERVER_INFO\u003c/code\u003e to reduce overhead on serverless with APM server 8.7.1+ \u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2516\"\u003e#2516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eList all exported symbols in elasticapm module  \u003ccode\u003e__all__\u003c/code\u003e \u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2504\"\u003e#2504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle Tornado 6.5.3 \u003ccode\u003eHttpHeaders\u003c/code\u003e \u003ccode\u003ein\u003c/code\u003e operator behavior change \u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2512\"\u003e#2512\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eRegion\u003c/th\u003e\n\u003cth\u003eARN\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eaf-south-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:af-south-1:2670937327\u0026lt;50:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eap-east-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:ap-east-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eap-northeast-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:ap-northeast-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eap-northeast-2\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:ap-northeast-2:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eap-northeast-3\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:ap-northeast-3:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eap-south-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:ap-south-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eap-southeast-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:ap-southeast-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eap-southeast-2\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:ap-southeast-2:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eap-southeast-3\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:ap-southeast-3:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eca-central-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:ca-central-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eeu-central-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:eu-central-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eeu-north-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:eu-north-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eeu-south-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:eu-south-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eeu-west-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:eu-west-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eeu-west-2\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:eu-west-2:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eeu-west-3\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:eu-west-3:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eme-south-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:me-south-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003esa-east-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:sa-east-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eus-east-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:us-east-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eus-east-2\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:us-east-2:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eus-west-1\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:us-west-1:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eus-west-2\u003c/td\u003e\n\u003ctd\u003earn:aws:lambda:us-west-2:267093732750:layer:elastic-apm-python-ver-6-25-0:1\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/md-adil\"\u003e\u003ccode\u003e@​md-adil\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/pull/2504\"\u003eelastic/apm-agent-python#2504\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/elastic/apm-agent-python/compare/v6.24.1...v6.25.0\"\u003ehttps://github.com/elastic/apm-agent-python/compare/v6.24.1...v6.25.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.24.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of psycopg ServerCursor and AsyncServerCursor instrumentation \u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2489\"\u003e#2489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix contrib/opentelemetry set_status to match base signature \u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2457\"\u003e#2457\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/elastic/apm-agent-python/blob/main/CHANGELOG.asciidoc\"\u003eelastic-apm's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e==== 6.25.0 - 2025-12-23\u003c/p\u003e\n\u003cp\u003e[float]\n===== Features\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIntroduce \u003ccode\u003eELASTIC_APM_SKIP_SERVER_INFO\u003c/code\u003e to reduce overhead on serverless with APM server 8.7.1+ {pull}2516\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2516\"\u003e#2516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eList all exported symbols in elasticapm module  \u003ccode\u003e__all__\u003c/code\u003e {pull}2504\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2504\"\u003e#2504\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e[float]\n===== Bug fixes\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle Tornado 6.5.3 \u003ccode\u003eHttpHeaders\u003c/code\u003e \u003ccode\u003ein\u003c/code\u003e operator behavior change {pull}2512\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2512\"\u003e#2512\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e[[release-notes-6.24.1]]\n==== 6.24.1 - 2025-11-21\u003c/p\u003e\n\u003cp\u003e[float]\n===== Bug fixes\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of psycopg ServerCursor and AsyncServerCursor instrumentation {pull}2489\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2489\"\u003e#2489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix contrib/opentelemetry set_status to match base signature {pull}2457\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2457\"\u003e#2457\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e[[release-notes-6.24.0]]\n==== 6.24.0 - 2025-08-12\u003c/p\u003e\n\u003cp\u003e[float]\n===== Features\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for recent sanic versions {pull}2190\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2190\"\u003e#2190\u003c/a\u003e, {pull}2194\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2194\"\u003e#2194\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake server certificate verification mandatory in fips mode {pull}2227\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2227\"\u003e#2227\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support Python 3.13 {pull}2216\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2216\"\u003e#2216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for azure-data-tables package for azure instrumentation {pull}2187\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2187\"\u003e#2187\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd span links from SNS messages {pull}2363\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2363\"\u003e#2363\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e[float]\n===== Bug fixes\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix psycopg2 cursor execute and executemany signatures {pull}2331\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2331\"\u003e#2331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix psycopg cursor execute and executemany signatures {pull}2332\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2332\"\u003e#2332\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix asgi middleware distributed tracing {pull}2334\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2334\"\u003e#2334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typing of start in Span / capture_span to float {pull}2335\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2335\"\u003e#2335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix azure instrumentation client_class and metrics sets invocation {pull}2337\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2337\"\u003e#2337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mysql_connector instrumentation connection retrieval {pull}2344\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2344\"\u003e#2344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove spurious Django QuerySet evaluation in case of database errors {pull}2158\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2158\"\u003e#2158\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e[[release-notes-6.23.0]]\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/apm-agent-python/commit/f425c427ba226aa64a80d6582a43fd5ce175366f\"\u003e\u003ccode\u003ef425c42\u003c/code\u003e\u003c/a\u003e update CHANGELOG and bump version to 6.25.0 (\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2518\"\u003e#2518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/apm-agent-python/commit/d962042ee6e7a7f9892e9fdfd2190f12598e0c58\"\u003e\u003ccode\u003ed962042\u003c/code\u003e\u003c/a\u003e build(deps): bump alpine from \u003ccode\u003e51183f2\u003c/code\u003e to \u003ccode\u003e865b95f\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2514\"\u003e#2514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/apm-agent-python/commit/cf6fbf2ecbdd4ee3165413ce5a56d45eccffbe39\"\u003e\u003ccode\u003ecf6fbf2\u003c/code\u003e\u003c/a\u003e elasticapm: introduce ELASTIC_APM_SKIP_SERVER_INFO (\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2516\"\u003e#2516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/apm-agent-python/commit/43f4deb8aca228877480c9e8b62696aea7883dce\"\u003e\u003ccode\u003e43f4deb\u003c/code\u003e\u003c/a\u003e updated the \u003cstrong\u003eall\u003c/strong\u003e section to include all  22 publicly exposed varia… (\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2504\"\u003e#2504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/apm-agent-python/commit/f8425150306e56179b6a714c304b936f42768b91\"\u003e\u003ccode\u003ef842515\u003c/code\u003e\u003c/a\u003e chore: deps(updatecli): Bump updatecli version to v0.112.0 (\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2510\"\u003e#2510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/apm-agent-python/commit/f5a12f8f301360a8a50234be65bf5a588d643c0a\"\u003e\u003ccode\u003ef5a12f8\u003c/code\u003e\u003c/a\u003e tornado: handle behaviour change in request.headers protocol (\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2512\"\u003e#2512\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/apm-agent-python/commit/bbaa3bbd5fd4ca1e10eb31cf997413c7bd4581c6\"\u003e\u003ccode\u003ebbaa3bb\u003c/code\u003e\u003c/a\u003e build(deps): bump wolfi/chainguard-base from \u003ccode\u003e1038c51\u003c/code\u003e to \u003ccode\u003e2b179e1\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2508\"\u003e#2508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/apm-agent-python/commit/648084b779dbff43858e6d05aff10ca2c9afb9ae\"\u003e\u003ccode\u003e648084b\u003c/code\u003e\u003c/a\u003e build(deps): bump wolfi/chainguard-base from \u003ccode\u003e2539782\u003c/code\u003e to \u003ccode\u003e1038c51\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2507\"\u003e#2507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/apm-agent-python/commit/1750a1dcb9887965c8c85ed815ff7b86b5f62270\"\u003e\u003ccode\u003e1750a1d\u003c/code\u003e\u003c/a\u003e chore: deps(updatecli): Bump updatecli version to v0.111.0 (\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2505\"\u003e#2505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/apm-agent-python/commit/30c4075a7342efbe61c2f7085d93bfbceb75daf2\"\u003e\u003ccode\u003e30c4075\u003c/code\u003e\u003c/a\u003e build(deps): bump alpine from \u003ccode\u003e4b7ce07\u003c/code\u003e to \u003ccode\u003e51183f2\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/elastic/apm-agent-python/issues/2503\"\u003e#2503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/elastic/apm-agent-python/compare/v6.23.0...v6.25.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `elasticsearch` from 8.6.1 to 8.19.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/elastic/elasticsearch-py/releases\"\u003eelasticsearch's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.19.3\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eInstrument ping with OTel (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3160\"\u003e#3160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd warnings for private APIs (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3212\"\u003e#3212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake positional arguments in DSL generated classes explicit (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3233\"\u003e#3233\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eES|QL query builder: fix missing assignment (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3151\"\u003e#3151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse relative imports to fix \u003ccode\u003eelasticsearch9\u003c/code\u003e package imports (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3232\"\u003e#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAPI\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eindices.delete_data_stream_options\u003c/code\u003e, \u003ccode\u003eindices.get_data_stream_options\u003c/code\u003e and \u003ccode\u003eindices.put_data_stream_options\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003etransform.get_node_stats\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003erequests_per_second\u003c/code\u003e argument to \u003ccode\u003edelete_by_query_rethrottle\u003c/code\u003e, \u003ccode\u003ereindex_rethrottle\u003c/code\u003e and \u003ccode\u003eupdate_by_query_rethrottle\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eallow_closed\u003c/code\u003e, \u003ccode\u003eallow_no_indices\u003c/code\u003e, \u003ccode\u003eexpand_wildcards\u003c/code\u003e, \u003ccode\u003eignore_throttled\u003c/code\u003e and \u003ccode\u003eignore_available\u003c/code\u003e arguments to \u003ccode\u003ecat.segments\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eid\u003c/code\u003e argument to \u003ccode\u003eml.stop_trained_model_deployment\u003c/code\u003e API\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.19.2\u003c/h2\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eflush_after_seconds\u003c/code\u003e option to \u003ccode\u003estreaming_bulk()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3064\"\u003e#3064\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDSL: support passing inner documents as \u003ccode\u003eAttrDict\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3080\"\u003e#3080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDSL: add some recently added field classes as top-level exports for the package (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAPI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003estreams\u003c/code\u003e namespace with \u003ccode\u003estreams.logs_disable\u003c/code\u003e, \u003ccode\u003estreams.logs_enable\u003c/code\u003e, \u003ccode\u003estreams.status\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eindices.get_data_stream_settings\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eindices.put_data_stream_settings\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ebytes\u003c/code\u003e and \u003ccode\u003etime\u003c/code\u003e parameters to various APIs in the \u003ccode\u003ecat\u003c/code\u003e namespace.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eindex_template\u003c/code\u003e parameter to \u003ccode\u003eindices.simulate_index_template\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003einput_type\u003c/code\u003e parameter to \u003ccode\u003einference.text_embedding\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eRemoved unsupported \u003ccode\u003esize\u003c/code\u003e parameter from \u003ccode\u003ereindex\u003c/code\u003e API\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDSL\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew \u003ccode\u003eCartesianBounds\u003c/code\u003e, \u003ccode\u003eCartesianCentroid\u003c/code\u003e, \u003ccode\u003eChangePoint\u003c/code\u003e aggregations\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ep_value\u003c/code\u003e parameter to \u003ccode\u003eSignificantTerms\u003c/code\u003e aggregation\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003efields\u003c/code\u003e parameter to \u003ccode\u003eSemanticText\u003c/code\u003e field\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd 3.14 to CI builds (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3103\"\u003e#3103\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/elastic/elasticsearch-py/commit/c686c6a958f221a2e601440901f25b87a11caaca\"\u003e\u003ccode\u003ec686c6a\u003c/code\u003e\u003c/a\u003e Release 8.19.3 (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3248\"\u003e#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/b4fda8987785f95897be79378da2bb4cc826b40c\"\u003e\u003ccode\u003eb4fda89\u003c/code\u003e\u003c/a\u003e Auto-generated API code (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3244\"\u003e#3244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/8830242d49192d5ec546af6863621747bfcffe77\"\u003e\u003ccode\u003e8830242\u003c/code\u003e\u003c/a\u003e Fix recursive errors generated in transport test (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3240\"\u003e#3240\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3241\"\u003e#3241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/d9dd6ff581104ce7cffefb3bfc05b1213483f450\"\u003e\u003ccode\u003ed9dd6ff\u003c/code\u003e\u003c/a\u003e explicit positional arguments in DSL generated classes (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3233\"\u003e#3233\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3237\"\u003e#3237\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/0b488f04de97da0eeae22abbad6ad6870266c6d9\"\u003e\u003ccode\u003e0b488f0\u003c/code\u003e\u003c/a\u003e Use relative imports to fix elasticsearch9 package imports (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3232\"\u003e#3232\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3236\"\u003e#3236\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/d02d20e6142112548475fda7c97109e7e0423883\"\u003e\u003ccode\u003ed02d20e\u003c/code\u003e\u003c/a\u003e Auto-generated code for 8.19 (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3223\"\u003e#3223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/1e4cea0c538417df252bec83b29c97fc2b0f79e2\"\u003e\u003ccode\u003e1e4cea0\u003c/code\u003e\u003c/a\u003e [Backport 8.19] Add warnings for private APIs (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3212\"\u003e#3212\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3215\"\u003e#3215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/367c5f2286d89dc753b325a54355143a683b0542\"\u003e\u003ccode\u003e367c5f2\u003c/code\u003e\u003c/a\u003e Bumps stack to version 8.19.9-SNAPSHOT (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3220\"\u003e#3220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/5e8f23c86918fe30e4af7792dfce7098e819e1ed\"\u003e\u003ccode\u003e5e8f23c\u003c/code\u003e\u003c/a\u003e Bumps stack to version 8.19.8-SNAPSHOT (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3210\"\u003e#3210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/3a7574acea839d91794bdb190ba46b35339a9292\"\u003e\u003ccode\u003e3a7574a\u003c/code\u003e\u003c/a\u003e Add global variable support to YAML test expression parser (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3196\"\u003e#3196\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3202\"\u003e#3202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/elastic/elasticsearch-py/compare/v8.6.1...v8.19.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask` from 2.2.5 to 2.3.3\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\u003e2.3.3\u003c/h2\u003e\n\u003cp\u003eThis is a fix release for the 2.3.x feature branch.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eChanges: \u003ca href=\"https://flask.palletsprojects.com/en/2.3.x/changes/#version-2-3-3\"\u003ehttps://flask.palletsprojects.com/en/2.3.x/changes/#version-2-3-3\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/31?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/31?closed=1\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.3.2\u003c/h2\u003e\n\u003cp\u003eThis is a security fix release for the 2.3.x release branch.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSecurity advisory: \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-m2qf-hxjv-5gpq\"\u003ehttps://github.com/pallets/flask/security/advisories/GHSA-m2qf-hxjv-5gpq\u003c/a\u003e, CVE-2023-30861\u003c/li\u003e\n\u003cli\u003eChanges: \u003ca href=\"https://flask.palletsprojects.com/en/2.3.x/changes/#version-2-3-2\"\u003ehttps://flask.palletsprojects.com/en/2.3.x/changes/#version-2-3-2\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/29?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/29?closed=1\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.3.1\u003c/h2\u003e\n\u003cp\u003eThis is a fix release for the 2.3.x release branch.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eChanges: \u003ca href=\"https://flask.palletsprojects.com/en/2.3.x/changes/#version-2-3-1\"\u003ehttps://flask.palletsprojects.com/en/2.3.x/changes/#version-2-3-1\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/28?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/28?closed=1\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.3.0\u003c/h2\u003e\n\u003cp\u003eThis is a feature release, which includes new features, removes previously deprecated code, and adds new deprecations. The 2.3.x branch is now the supported fix branch, the 2.2.x branch will become a tag marking the end of support for that branch. We encourage everyone to upgrade, and to use a tool such as \u003ca href=\"https://pypi.org/project/pip-tools/\"\u003epip-tools\u003c/a\u003e to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eChanges: \u003ca href=\"https://flask.palletsprojects.com/en/2.3.x/changes/#version-2-3-0\"\u003ehttps://flask.palletsprojects.com/en/2.3.x/changes/#version-2-3-0\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/24?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/24?closed=1\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 2.3.3\u003c/h2\u003e\n\u003cp\u003eReleased 2023-08-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.12 compatibility.\u003c/li\u003e\n\u003cli\u003eRequire Werkzeug \u0026gt;= 2.3.7.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eflit_core\u003c/code\u003e instead of \u003ccode\u003esetuptools\u003c/code\u003e as build backend.\u003c/li\u003e\n\u003cli\u003eRefactor how an app's root and instance paths are determined. :issue:\u003ccode\u003e5160\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.3.2\u003c/h2\u003e\n\u003cp\u003eReleased 2023-05-01\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003eVary: Cookie\u003c/code\u003e header when the session is accessed, modified, or refreshed.\u003c/li\u003e\n\u003cli\u003eUpdate Werkzeug requirement to \u0026gt;=2.3.3 to apply recent bug fixes.\n:ghsa:\u003ccode\u003em2qf-hxjv-5gpq\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2023-04-25\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRestore deprecated \u003ccode\u003efrom flask import Markup\u003c/code\u003e. :issue:\u003ccode\u003e5084\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2023-04-25\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDrop support for Python 3.7. :pr:\u003ccode\u003e5072\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate minimum requirements to the latest versions: Werkzeug\u0026gt;=2.3.0, Jinja2\u0026gt;3.1.2,\nitsdangerous\u0026gt;=2.1.2, click\u0026gt;=8.1.3.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove previously deprecated code. :pr:\u003ccode\u003e4995\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003epush\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e methods of the deprecated \u003ccode\u003e_app_ctx_stack\u003c/code\u003e and\n\u003ccode\u003e_request_ctx_stack\u003c/code\u003e objects are removed. \u003ccode\u003etop\u003c/code\u003e still exists to give\nextensions more time to update, but it will be removed.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eFLASK_ENV\u003c/code\u003e environment variable, \u003ccode\u003eENV\u003c/code\u003e config key, and \u003ccode\u003eapp.env\u003c/code\u003e\nproperty are removed.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003esession_cookie_name\u003c/code\u003e, \u003ccode\u003esend_file_max_age_default\u003c/code\u003e, \u003ccode\u003euse_x_sendfile\u003c/code\u003e,\n\u003ccode\u003epropagate_exceptions\u003c/code\u003e, and \u003ccode\u003etemplates_auto_reload\u003c/code\u003e properties on \u003ccode\u003eapp\u003c/code\u003e\nare removed.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eJSON_AS_ASCII\u003c/code\u003e, \u003ccode\u003eJSON_SORT_KEYS\u003c/code\u003e, \u003ccode\u003eJSONIFY_MIMETYPE\u003c/code\u003e, and\n\u003ccode\u003eJSONIFY_PRETTYPRINT_REGULAR\u003c/code\u003e config keys are removed.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eapp.before_first_request\u003c/code\u003e and \u003ccode\u003ebp.before_app_first_request\u003c/code\u003e decorators\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3205b53c7cf69d17fee49cac6b84978175b7dd73\"\u003e\u003ccode\u003e3205b53\u003c/code\u003e\u003c/a\u003e release version 2.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/9f9550247a2798b9dcc28081c15e266442f4e28a\"\u003e\u003ccode\u003e9f95502\u003c/code\u003e\u003c/a\u003e bump werkzeug 2.3.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/02736640095ed6d5a4a409a9658eaca373fd1d48\"\u003e\u003ccode\u003e0273664\u003c/code\u003e\u003c/a\u003e Update dispatch by path example (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5217\"\u003e#5217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/a887e179b8af6a9c582a7918f9f8499ab58032cc\"\u003e\u003ccode\u003ea887e17\u003c/code\u003e\u003c/a\u003e clean up\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/aa6d4c3e92bd11a7d449f49f524e54bbb88b89c0\"\u003e\u003ccode\u003eaa6d4c3\u003c/code\u003e\u003c/a\u003e update dispatch-by-path example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/826514b8eb18f6c314cf566630253d35c89e42c3\"\u003e\u003ccode\u003e826514b\u003c/code\u003e\u003c/a\u003e fix flake8 bugbear findings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/6d266f63633f5f127165d4ef836db14a59bbc106\"\u003e\u003ccode\u003e6d266f6\u003c/code\u003e\u003c/a\u003e Pass maxsplit via kwarg to re.split (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5215\"\u003e#5215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/17e146ad949b3d80438faf95e81b53c543cb50f5\"\u003e\u003ccode\u003e17e146a\u003c/code\u003e\u003c/a\u003e Pass maxsplit via kwarg to re.split\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/8a72b741616556b4f739ea79ab502c2d2038844a\"\u003e\u003ccode\u003e8a72b74\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5211\"\u003e#5211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/7255be9626ab56d81bc0ab86db939fcc1da9bca1\"\u003e\u003ccode\u003e7255be9\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/pallets/flask/compare/2.2.5...2.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask-caching` from 2.0.2 to 2.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets-eco/flask-caching/releases\"\u003eflask-caching's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.1\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/blob/v2.3.1/CHANGES.rst\"\u003ehttps://github.com/pallets-eco/flask-caching/blob/v2.3.1/CHANGES.rst\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.3.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/blob/v2.1.0/CHANGES.rst\"\u003ehttps://github.com/pallets-eco/flask-caching/blob/v2.1.0/CHANGES.rst\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.2.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/blob/v2.1.0/CHANGES.rst\"\u003ehttps://github.com/pallets-eco/flask-caching/blob/v2.1.0/CHANGES.rst\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.1.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/blob/v2.1.0/CHANGES.rst\"\u003ehttps://github.com/pallets-eco/flask-caching/blob/v2.1.0/CHANGES.rst\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/pallets-eco/flask-caching/blob/master/CHANGES.rst\"\u003eflask-caching's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-02-22\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRelax cachelib version to allow latest releases\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-05-04\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eresponse_hit_indication\u003c/code\u003e flag to \u003ccode\u003eCache.cached\u003c/code\u003e decorator for appending 'hit_cache' headers to responses, indicating cache hits.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.2.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop python 3.7 support\u003c/li\u003e\n\u003cli\u003epython 3.11 officially supported\u003c/li\u003e\n\u003cli\u003eFix issue causing \u003ccode\u003eargs_to_ignore\u003c/code\u003e to not work with \u003ccode\u003eflask_caching.Cache.memoize\u003c/code\u003e decorator when keyword arguments were used in the decorated function call\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-10-08\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix type signature in \u003ccode\u003eflask_caching.utils.make_template_fragment_key\u003c/code\u003e. :pr:\u003ccode\u003e430\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdded docs and example for make_cache_key\u003c/li\u003e\n\u003cli\u003esupport Flask 3\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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-eco/flask-caching/commit/e59bc040cd47cd2b43e501d636d43d442c50b3ff\"\u003e\u003ccode\u003ee59bc04\u003c/code\u003e\u003c/a\u003e release 2.3.1 (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-caching/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/commit/023491c1c44d03baafce2231d6532493bb945711\"\u003e\u003ccode\u003e023491c\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.10.0 to 1.11.1 in /requirements (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-caching/issues/580\"\u003e#580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/commit/b786b9f9b7521ece065d8e202700fe2d1c1d5fd4\"\u003e\u003ccode\u003eb786b9f\u003c/code\u003e\u003c/a\u003e Bump pytest from 8.2.0 to 8.3.2 in /requirements (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-caching/issues/582\"\u003e#582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/commit/20a8afdcb53da9725467e4ab2788cb9851f39c9c\"\u003e\u003ccode\u003e20a8afd\u003c/code\u003e\u003c/a\u003e Bump redis from 5.0.4 to 5.0.8 in /requirements (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-caching/issues/581\"\u003e#581\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/commit/33d673d89a644dba7716b65bf09e47046b33d6d6\"\u003e\u003ccode\u003e33d673d\u003c/code\u003e\u003c/a\u003e Bump tox from 4.15.0 to 4.16.0 in /requirements (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-caching/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/commit/3dddd9265879974d5e556704e44ef1c6cc09ce4d\"\u003e\u003ccode\u003e3dddd92\u003c/code\u003e\u003c/a\u003e Bump sphinx from 7.3.7 to 8.0.2 in /requirements (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-caching/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/commit/5dffcf336042beb929d30a05647798ee4b3de6ab\"\u003e\u003ccode\u003e5dffcf3\u003c/code\u003e\u003c/a\u003e Bump pytest-asyncio from 0.23.7 to 0.23.8 in /requirements (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-caching/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/commit/b44676c4bf341493cd51cde7d3f82d1fcd7a0f6a\"\u003e\u003ccode\u003eb44676c\u003c/code\u003e\u003c/a\u003e Bump certifi from 2024.2.2 to 2024.7.4 in /requirements (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-caching/issues/578\"\u003e#578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/commit/8d3e312615e2c2740f97e225e639bc61c8818edb\"\u003e\u003ccode\u003e8d3e312\u003c/code\u003e\u003c/a\u003e Bump types-redis from 4.6.0.20240425 to 4.6.0.20240726 in /requirements (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-caching/issues/584\"\u003e#584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-caching/commit/7a14296cf2f9c72f760297fbc4d531b5c6c1dd46\"\u003e\u003ccode\u003e7a14296\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.1 to 2.2.2 in /requirements (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-caching/issues/573\"\u003e#573\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets-eco/flask-caching/compare/v2.0.2...v2.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prometheus-client` from 0.17.1 to 0.24.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/prometheus/client_python/releases\"\u003eprometheus-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.24.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Django] Pass correct registry to MultiProcessCollector by \u003ca href=\"https://github.com/jelly\"\u003e\u003ccode\u003e@​jelly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1152\"\u003eprometheus/client_python#1152\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.24.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an AIOHTTP exporter by \u003ca href=\"https://github.com/Lexicality\"\u003e\u003ccode\u003e@​Lexicality\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1139\"\u003eprometheus/client_python#1139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd remove_matching() method for metric label deletion by \u003ca href=\"https://github.com/hazel-shen\"\u003e\u003ccode\u003e@​hazel-shen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1121\"\u003eprometheus/client_python#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(multiprocess): avoid double-building child metric names (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1035\"\u003e#1035\u003c/a\u003e) by \u003ca href=\"https://github.com/hazel-shen\"\u003e\u003ccode\u003e@​hazel-shen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1146\"\u003eprometheus/client_python#1146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't interleave histogram metrics in multi-process collector by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1148\"\u003eprometheus/client_python#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax registry type annotations for exposition by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1149\"\u003eprometheus/client_python#1149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded compression support in pushgateway by \u003ca href=\"https://github.com/ritesh-avesha\"\u003e\u003ccode\u003e@​ritesh-avesha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1144\"\u003eprometheus/client_python#1144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django exporter (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1088\"\u003e#1088\u003c/a\u003e) by \u003ca href=\"https://github.com/Chadys\"\u003e\u003ccode\u003e@​Chadys\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1143\"\u003eprometheus/client_python#1143\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.23.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use tuples instead of packaging Version by \u003ca href=\"https://github.com/efiop\"\u003e\u003ccode\u003e@​efiop\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1136\"\u003eprometheus/client_python#1136\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/efiop\"\u003e\u003ccode\u003e@​efiop\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1136\"\u003eprometheus/client_python#1136\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.23.0...v0.23.1\"\u003ehttps://github.com/prometheus/client_python/compare/v0.23.0...v0.23.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUTF-8 Content Negotiation by \u003ca href=\"https://github.com/ywwg\"\u003e\u003ccode\u003e@​ywwg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1102\"\u003eprometheus/client_python#1102\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe include test data by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1113\"\u003eprometheus/client_python#1113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove parser performance by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1117\"\u003eprometheus/client_python#1117\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support to \u003ccode\u003ewrite_to_textfile\u003c/code\u003e for custom tmpdir by \u003ca href=\"https://github.com/aadityadhruv\"\u003e\u003ccode\u003e@​aadityadhruv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1115\"\u003eprometheus/client_python#1115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOM text exposition for NH by \u003ca href=\"https://github.com/vesari\"\u003e\u003ccode\u003e@​vesari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1087\"\u003eprometheus/client_python#1087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix bug which caused metric publishing to not accept query string parameters in ASGI app by \u003ca href=\"https://github.com/hacksparr0w\"\u003e\u003ccode\u003e@​hacksparr0w\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1125\"\u003eprometheus/client_python#1125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit native histograms only when OM 2.0.0 is requested by \u003ca href=\"https://github.com/vesari\"\u003e\u003ccode\u003e@​vesari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1128\"\u003eprometheus/client_python#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: remove space after comma in openmetrics exposition by \u003ca href=\"https://github.com/theSuess\"\u003e\u003ccode\u003e@​theSuess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1132\"\u003eprometheus/client_python#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue parsing double spaces after # HELP/# TYPE by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1134\"\u003eprometheus/client_python#1134\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/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1113\"\u003eprometheus/client_python#1113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aadityadhruv\"\u003e\u003ccode\u003e@​aadityadhruv\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1115\"\u003eprometheus/client_python#1115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hacksparr0w\"\u003e\u003ccode\u003e@​hacksparr0w\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1125\"\u003eprometheus/client_python#1125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theSuess\"\u003e\u003ccode\u003e@​theSuess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1132\"\u003eprometheus/client_python#1132\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.22.1...v0.23.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.22.1...v0.23.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.22.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBugFix: Skip validating and parsing comment lines early (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1108\"\u003e#1108\u003c/a\u003e) by \u003ca href=\"https://github.com/wissamir\"\u003e\u003ccode\u003e@​wissamir\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1109\"\u003eprometheus/client_python#1109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse License Expressions in pyproject.toml by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1111\"\u003eprometheus/client_python#1111\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.22.0...v0.22.1\"\u003ehttps://github.com/prometheus/client_python/compare/v0.22.0...v0.22.1\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/prometheus/client_python/commit/f417f6ea8f058165a1934e368fed245e91aafc14\"\u003e\u003ccode\u003ef417f6e\u003c/code\u003e\u003c/a\u003e Release 0.24.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/6f0e967c1f7a408b75861d6833a8d303874be95d\"\u003e\u003ccode\u003e6f0e967\u003c/code\u003e\u003c/a\u003e Pass correct registry to MultiProcessCollector (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1152\"\u003e#1152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/c5024d310fbfcba45a5e9db62e337a3a7930ea16\"\u003e\u003ccode\u003ec5024d3\u003c/code\u003e\u003c/a\u003e Release 0.24.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/e1cdc203b1cf5f15c7b9a64d79fccc7907a62ca3\"\u003e\u003ccode\u003ee1cdc20\u003c/code\u003e\u003c/a\u003e Add Django exporter (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1088\"\u003e#1088\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1143\"\u003e#1143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/7b9959209492c06968785c66bc6ea2316d156f91\"\u003e\u003ccode\u003e7b99592\u003c/code\u003e\u003c/a\u003e Added compression support in pushgateway (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1144\"\u003e#1144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/13df12421e1ba9c621246b9084229e24fda4074e\"\u003e\u003ccode\u003e13df124\u003c/code\u003e\u003c/a\u003e Relax registry type annotations for exposition (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1149\"\u003e#1149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/a264ec0d85600decfb0681d00ed1566186bebfb3\"\u003e\u003ccode\u003ea264ec0\u003c/code\u003e\u003c/a\u003e Don't interleave histogram metrics in multi-process collector (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1148\"\u003e#1148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/e8f8bae6554de11ebffffcc878ab19abd67528f2\"\u003e\u003ccode\u003ee8f8bae\u003c/code\u003e\u003c/a\u003e fix(multiprocess): avoid double-building child metric names (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1035\"\u003e#1035\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1146\"\u003e#1146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/1783ca87acbed1d45ebaa124b7b22244f9c9c2e8\"\u003e\u003ccode\u003e1783ca8\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1142\"\u003e#1142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/378510b8ae91d23383cd1c7e0be180b374a1c84c\"\u003e\u003ccode\u003e378510b\u003c/code\u003e\u003c/a\u003e Add remove_matching() method for metric label deletion (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1121\"\u003e#1121\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.17.1...v0.24.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyjwt` from 2.6.0 to 2.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jpadilla/pyjwt/releases\"\u003epyjwt's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.11.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed type error in comment by \u003ca href=\"https://github.com/shuhaib-aot\"\u003e\u003ccode\u003e@​shuhaib-aot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1026\"\u003ejpadilla/pyjwt#1026\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/jpadilla/pyjwt/pull/1018\"\u003ejpadilla/pyjwt#1018\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/jpadilla/pyjwt/pull/1033\"\u003ejpadilla/pyjwt#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake note of use of leeway with nbf by \u003ca href=\"https://github.com/djw8605\"\u003e\u003ccode\u003e@​djw8605\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1034\"\u003ejpadilla/pyjwt#1034\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/jpadilla/pyjwt/pull/1035\"\u003ejpadilla/pyjwt#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/964\"\u003e#964\u003c/a\u003e: Validate key against allowed types for Algorithm family by \u003ca href=\"https://github.com/pachewise\"\u003e\u003ccode\u003e@​pachewise\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/985\"\u003ejpadilla/pyjwt#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFeat \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/1024\"\u003e#1024\u003c/a\u003e: Add iterator for PyJWKSet by \u003ca href=\"https://github.com/pachewise\"\u003e\u003ccode\u003e@​pachewise\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1041\"\u003ejpadilla/pyjwt#1041\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/1039\"\u003e#1039\u003c/a\u003e: Add iss, issuer type checks by \u003ca href=\"https://github.com/pachewise\"\u003e\u003ccode\u003e@​pachewise\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1040\"\u003ejpadilla/pyjwt#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/660\"\u003e#660\u003c/a\u003e: Improve typing/logic for \u003ccode\u003eoptions\u003c/code\u003e in decode, decode_complete; Improve docs by \u003ca href=\"https://github.com/pachewise\"\u003e\u003ccode\u003e@​pachewise\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1045\"\u003ejpadilla/pyjwt#1045\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/jpadilla/pyjwt/pull/1042\"\u003ejpadilla/pyjwt#1042\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/jpadilla/pyjwt/pull/1052\"\u003ejpadilla/pyjwt#1052\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/jpadilla/pyjwt/pull/1053\"\u003ejpadilla/pyjwt#1053\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/1022\"\u003e#1022\u003c/a\u003e: Map \u003ccode\u003ealgorithm=None\u003c/code\u003e to \u0026quot;none\u0026quot; by \u003ca href=\"https://github.com/qqii\"\u003e\u003ccode\u003e@​qqii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1056\"\u003ejpadilla/pyjwt#1056\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/jpadilla/pyjwt/pull/1055\"\u003ejpadilla/pyjwt#1055\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/jpadilla/pyjwt/pull/1058\"\u003ejpadilla/pyjwt#1058\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/jpadilla/pyjwt/pull/1060\"\u003ejpadilla/pyjwt#1060\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/jpadilla/pyjwt/pull/1061\"\u003ejpadilla/pyjwt#1061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/1047\"\u003e#1047\u003c/a\u003e: Correct \u003ccode\u003ePyJWKClient.get_signing_key_from_jwt\u003c/code\u003e annotation  by \u003ca href=\"https://github.com/khvn26\"\u003e\u003ccode\u003e@​khvn26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1048\"\u003ejpadilla/pyjwt#1048\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/jpadilla/pyjwt/pull/1062\"\u003ejpadilla/pyjwt#1062\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed doc string typo in _validate_jti() function \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/1063\"\u003e#1063\u003c/a\u003e by \u003ca href=\"https://github.com/kuldeepkhatke\"\u003e\u003ccode\u003e@​kuldeepkhatke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1064\"\u003ejpadilla/pyjwt#1064\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/jpadilla/pyjwt/pull/1065\"\u003ejpadilla/pyjwt#1065\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate SECURITY.md by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1057\"\u003ejpadilla/pyjwt#1057\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTyping fix: use \u003ccode\u003efloat\u003c/code\u003e instead of \u003ccode\u003eint\u003c/code\u003e for \u003ccode\u003elifespan\u003c/code\u003e and \u003ccode\u003etimeout\u003c/code\u003e by \u003ca href=\"https://github.com/nikitagashkov\"\u003e\u003ccode\u003e@​nikitagashkov\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1068\"\u003ejpadilla/pyjwt#1068\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/jpadilla/pyjwt/pull/1067\"\u003ejpadilla/pyjwt#1067\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/jpadilla/pyjwt/pull/1071\"\u003ejpadilla/pyjwt#1071\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/jpadilla/pyjwt/pull/1076\"\u003ejpadilla/pyjwt#1076\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix TYP header documentation by \u003ca href=\"https://github.com/fobiasmog\"\u003e\u003ccode\u003e@​fobiasmog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1046\"\u003ejpadilla/pyjwt#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edoc: Document claims sub and jti by \u003ca href=\"https://github.com/cleder\"\u003e\u003ccode\u003e@​cleder\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1088\"\u003ejpadilla/pyjwt#1088\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/jpadilla/pyjwt/pull/1077\"\u003ejpadilla/pyjwt#1077\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1089\"\u003ejpadilla/pyjwt#1089\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/stale from 8 to 10 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/jpadilla/pyjwt/pull/1090\"\u003ejpadilla/pyjwt#1090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 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/jpadilla/pyjwt/pull/1083\"\u003ejpadilla/pyjwt#1083\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/jpadilla/pyjwt/pull/1091\"\u003ejpadilla/pyjwt#1091\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/jpadilla/pyjwt/pull/1093\"\u003ejpadilla/pyjwt#1093\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/jpadilla/pyjwt/pull/1096\"\u003ejpadilla/pyjwt#1096\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve package build warnings by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1105\"\u003ejpadilla/pyjwt#1105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport Python 3.14, and test against PyPy 3.10+ by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1104\"\u003ejpadilla/pyjwt#1104\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix a \u003ccode\u003eSyntaxWarning\u003c/code\u003e caused by invalid escape sequences by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1103\"\u003ejpadilla/pyjwt#1103\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize CHANGELOG links to PRs by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1110\"\u003ejpadilla/pyjwt#1110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate from \u003ccode\u003epep517\u003c/code\u003e, which is deprecated, to \u003ccode\u003ebuild\u003c/code\u003e by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode...\n\n_Description has been truncated_","html_url":"https://github.com/CybercentreCanada/howler/pull/171","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/CybercentreCanada%2Fhowler/issues/171","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/171/packages"}},{"old_version":"1.8.0","new_version":"1.9.0","update_type":"minor","path":null,"pr_created_at":"2026-02-01T11:10:59.000Z","version_change":"1.8.0 → 1.9.0","issue":{"uuid":"3881829355","node_id":"PR_kwDOJpUnI87AtFcc","number":122,"state":"closed","title":"Bump the poetry-dependencies group across 1 directory with 79 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-01T11:05:21.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-01T11:10:59.000Z","updated_at":"2026-03-01T11:05:23.000Z","time_to_close":2418862,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"poetry-dependencies","update_count":79,"packages":[{"name":"black","old_version":"25.9.0","new_version":"26.1.0","repository_url":"https://github.com/psf/black"},{"name":"coverage","old_version":"7.10.7","new_version":"7.13.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"furo","old_version":"2025.9.25","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"mypy","old_version":"1.18.2","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.3.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"ruff","old_version":"0.13.3","new_version":"0.14.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest","old_version":"8.4.2","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"sphinx-click","old_version":"6.1.0","new_version":"6.2.0","repository_url":"https://github.com/click-contrib/sphinx-click"},{"name":"matplotlib","old_version":"3.10.6","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"deptry","old_version":"0.23.1","new_version":"0.24.0","repository_url":"https://github.com/fpgmaas/deptry"},{"name":"pyarrow","old_version":"21.0.0","new_version":"23.0.0","repository_url":"https://github.com/apache/arrow"},{"name":"pandas-stubs","old_version":"2.3.2.250926","new_version":"2.3.3.260113","repository_url":"https://github.com/pandas-dev/pandas-stubs"},{"name":"anyio","old_version":"4.11.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"async-lru","old_version":"2.0.5","new_version":"2.1.0","repository_url":"https://github.com/aio-libs/async-lru"},{"name":"beautifulsoup4","old_version":"4.14.2","new_version":"4.14.3"},{"name":"bleach","old_version":"6.2.0","new_version":"6.3.0","repository_url":"https://github.com/mozilla/bleach"},{"name":"certifi","old_version":"2025.10.5","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cfgv","old_version":"3.4.0","new_version":"3.5.0","repository_url":"https://github.com/asottile/cfgv"},{"name":"charset-normalizer","old_version":"3.4.3","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.0","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"debugpy","old_version":"1.8.17","new_version":"1.8.20","repository_url":"https://github.com/microsoft/debugpy"},{"name":"exceptiongroup","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"filelock","old_version":"3.19.1","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.60.1","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"identify","old_version":"2.6.15","new_version":"2.6.16","repository_url":"https://github.com/pre-commit/identify"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"ipykernel","old_version":"6.30.1","new_version":"7.1.0","repository_url":"https://github.com/ipython/ipykernel"},{"name":"ipython","old_version":"8.37.0","new_version":"8.38.0","repository_url":"https://github.com/ipython/ipython"},{"name":"ipywidgets","old_version":"8.1.7","new_version":"8.1.8","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"json5","old_version":"0.12.1","new_version":"0.13.0","repository_url":"https://github.com/dpranke/pyjson5"},{"name":"jsonschema","old_version":"4.25.1","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jupyter-client","old_version":"8.6.3","new_version":"8.8.0","repository_url":"https://github.com/jupyter/jupyter_client"},{"name":"jupyter-core","old_version":"5.8.1","new_version":"5.9.1","repository_url":"https://github.com/jupyter/jupyter_core"},{"name":"jupyter-server-terminals","old_version":"0.5.3","new_version":"0.5.4","repository_url":"https://github.com/jupyter-server/jupyter_server_terminals"},{"name":"jupyterlab","old_version":"4.4.9","new_version":"4.5.3","repository_url":"https://github.com/jupyterlab/jupyterlab"},{"name":"jupyterlab-widgets","old_version":"3.0.15","new_version":"3.0.16","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"lark","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/lark-parser/lark"},{"name":"matplotlib-inline","old_version":"0.1.7","new_version":"0.2.1","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"mistune","old_version":"3.1.4","new_version":"3.2.0","repository_url":"https://github.com/lepture/mistune"},{"name":"nbclient","old_version":"0.10.2","new_version":"0.10.4","repository_url":"https://github.com/jupyter/nbclient"},{"name":"nbconvert","old_version":"7.16.6","new_version":"7.17.0","repository_url":"https://github.com/jupyter/nbconvert"},{"name":"nodeenv","old_version":"1.9.1","new_version":"1.10.0","repository_url":"https://github.com/ekalinin/nodeenv"},{"name":"numba","old_version":"0.62.1","new_version":"0.63.1","repository_url":"https://github.com/numba/numba"},{"name":"numexpr","old_version":"2.13.1","new_version":"2.14.1","repository_url":"https://github.com/pydata/numexpr"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pillow","old_version":"11.3.0","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.4.0","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prometheus-client","old_version":"0.23.1","new_version":"0.24.1","repository_url":"https://github.com/prometheus/client_python"},{"name":"psutil","old_version":"7.1.0","new_version":"7.2.2","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pycparser","old_version":"2.23","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pyparsing","old_version":"3.2.5","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"roman-numerals-py","old_version":"3.1.0","new_version":"4.1.0","repository_url":"https://github.com/AA-Turner/roman-numerals"},{"name":"rpds-py","old_version":"0.27.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"ruamel-yaml","old_version":"0.18.15","new_version":"0.19.1"},{"name":"send2trash","old_version":"1.8.3","new_version":"2.1.0","repository_url":"https://github.com/arsenetar/send2trash"},{"name":"setuptools","old_version":"80.9.0","new_version":"80.10.2","repository_url":"https://github.com/pypa/setuptools"},{"name":"soupsieve","old_version":"2.8","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"0.48.0","new_version":"0.52.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"tomli","old_version":"2.2.1","new_version":"2.4.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"tornado","old_version":"6.5.2","new_version":"6.5.4","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"types-pytz","old_version":"2025.2.0.20250809","new_version":"2025.2.0.20251108","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"tzdata","old_version":"2025.2","new_version":"2025.3","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.5.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.37.0","new_version":"0.40.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"virtualenv","old_version":"20.34.0","new_version":"20.36.1","repository_url":"https://github.com/pypa/virtualenv"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wcwidth","old_version":"0.2.14","new_version":"0.5.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"webcolors","old_version":"24.11.1","new_version":"25.10.0","repository_url":"https://github.com/ubernostrum/webcolors"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"websockets","old_version":"15.0.1","new_version":"16.0","repository_url":"https://github.com/python-websockets/websockets"},{"name":"widgetsnbextension","old_version":"4.0.14","new_version":"4.0.15"}],"path":null,"ecosystem":"pip"},"body":"Bumps the poetry-dependencies group with 75 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [black](https://github.com/psf/black) | `25.9.0` | `26.1.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.10.7` | `7.13.2` |\n| [furo](https://github.com/pradyunsg/furo) | `2025.9.25` | `2025.12.19` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `1.19.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.3.0` | `4.5.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.13.3` | `0.14.14` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.2` | `9.0.2` |\n| [sphinx-click](https://github.com/click-contrib/sphinx-click) | `6.1.0` | `6.2.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.6` | `3.10.8` |\n| [deptry](https://github.com/fpgmaas/deptry) | `0.23.1` | `0.24.0` |\n| [pyarrow](https://github.com/apache/arrow) | `21.0.0` | `23.0.0` |\n| [pandas-stubs](https://github.com/pandas-dev/pandas-stubs) | `2.3.2.250926` | `2.3.3.260113` |\n| [anyio](https://github.com/agronholm/anyio) | `4.11.0` | `4.12.1` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [async-lru](https://github.com/aio-libs/async-lru) | `2.0.5` | `2.1.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.14.2` | `4.14.3` |\n| [bleach](https://github.com/mozilla/bleach) | `6.2.0` | `6.3.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.10.5` | `2026.1.4` |\n| [cfgv](https://github.com/asottile/cfgv) | `3.4.0` | `3.5.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.3` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.3.0` | `8.3.1` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.17` | `1.8.20` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.3.0` | `1.3.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.19.1` | `3.20.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.1` | `4.61.1` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.15` | `2.6.16` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [ipykernel](https://github.com/ipython/ipykernel) | `6.30.1` | `7.1.0` |\n| [ipython](https://github.com/ipython/ipython) | `8.37.0` | `8.38.0` |\n| [ipywidgets](https://github.com/jupyter-widgets/ipywidgets) | `8.1.7` | `8.1.8` |\n| [json5](https://github.com/dpranke/pyjson5) | `0.12.1` | `0.13.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.1` | `4.26.0` |\n| [jupyter-client](https://github.com/jupyter/jupyter_client) | `8.6.3` | `8.8.0` |\n| [jupyter-core](https://github.com/jupyter/jupyter_core) | `5.8.1` | `5.9.1` |\n| [jupyter-server-terminals](https://github.com/jupyter-server/jupyter_server_terminals) | `0.5.3` | `0.5.4` |\n| [jupyterlab](https://github.com/jupyterlab/jupyterlab) | `4.4.9` | `4.5.3` |\n| [jupyterlab-widgets](https://github.com/jupyter-widgets/ipywidgets) | `3.0.15` | `3.0.16` |\n| [lark](https://github.com/lark-parser/lark) | `1.3.0` | `1.3.1` |\n| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.1.7` | `0.2.1` |\n| [mistune](https://github.com/lepture/mistune) | `3.1.4` | `3.2.0` |\n| [nbclient](https://github.com/jupyter/nbclient) | `0.10.2` | `0.10.4` |\n| [nbconvert](https://github.com/jupyter/nbconvert) | `7.16.6` | `7.17.0` |\n| [nodeenv](https://github.com/ekalinin/nodeenv) | `1.9.1` | `1.10.0` |\n| [numba](https://github.com/numba/numba) | `0.62.1` | `0.63.1` |\n| [numexpr](https://github.com/pydata/numexpr) | `2.13.1` | `2.14.1` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.3.0` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.4.0` | `4.5.1` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.23.1` | `0.24.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.1.0` | `7.2.2` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.23` | `3.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.5` | `3.3.2` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [roman-numerals-py](https://github.com/AA-Turner/roman-numerals) | `3.1.0` | `4.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.27.1` | `0.30.0` |\n| ruamel-yaml | `0.18.15` | `0.19.1` |\n| [send2trash](https://github.com/arsenetar/send2trash) | `1.8.3` | `2.1.0` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.9.0` | `80.10.2` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.8` | `2.8.3` |\n| [starlette](https://github.com/Kludex/starlette) | `0.48.0` | `0.52.1` |\n| [tomli](https://github.com/hukkin/tomli) | `2.2.1` | `2.4.0` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.2` | `6.5.4` |\n| [types-pytz](https://github.com/typeshed-internal/stub_uploader) | `2025.2.0.20250809` | `2025.2.0.20251108` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.5.0` | `2.6.3` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.37.0` | `0.40.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.34.0` | `20.36.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.14` | `0.5.3` |\n| [webcolors](https://github.com/ubernostrum/webcolors) | `24.11.1` | `25.10.0` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [websockets](https://github.com/python-websockets/websockets) | `15.0.1` | `16.0` |\n| [widgetsnbextension](http://jupyter.org) | `4.0.14` | `4.0.15` |\n\n\nUpdates `black` from 25.9.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.1.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cp\u003eIntroduces the 2026 stable style (\u003ca href=\"https://redirect.github.com/psf/black/issues/4892\"\u003e#4892\u003c/a\u003e), stabilizing the following changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ealways_one_newline_after_import\u003c/code\u003e: Always force one blank line after import\nstatements, except when the line after the import is a comment or an import statement\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4489\"\u003e#4489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_fmt_skip_in_one_liners\u003c/code\u003e: Fix \u003ccode\u003e# fmt: skip\u003c/code\u003e behavior on one-liner declarations,\nsuch as \u003ccode\u003edef foo(): return \u0026quot;mock\u0026quot; # fmt: skip\u003c/code\u003e, where previously the declaration would\nhave been incorrectly collapsed (\u003ca href=\"https://redirect.github.com/psf/black/issues/4800\"\u003e#4800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_module_docstring_detection\u003c/code\u003e: Fix module docstrings being treated as normal\nstrings if preceded by comments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4764\"\u003e#4764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_type_expansion_split\u003c/code\u003e: Fix type expansions split in generic functions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emultiline_string_handling\u003c/code\u003e: Make expressions involving multiline strings more compact\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/1879\"\u003e#1879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enormalize_cr_newlines\u003c/code\u003e: Add \u003ccode\u003e\\r\u003c/code\u003e style newlines to the potential newlines to\nnormalize file newlines both from and to (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eremove_parens_around_except_types\u003c/code\u003e: Remove parentheses around multiple exception\ntypes in \u003ccode\u003eexcept\u003c/code\u003e and \u003ccode\u003eexcept*\u003c/code\u003e without \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\u003e\u003ccode\u003eremove_parens_from_assignment_lhs\u003c/code\u003e: Remove unnecessary parentheses from the left-hand\nside of assignments while preserving magic trailing commas and intentional multiline\nformatting (\u003ca href=\"https://redirect.github.com/psf/black/issues/4865\"\u003e#4865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estandardize_type_comments\u003c/code\u003e: Format type comments which have zero or more spaces\nbetween \u003ccode\u003e#\u003c/code\u003e and \u003ccode\u003etype:\u003c/code\u003e or between \u003ccode\u003etype:\u003c/code\u003e and value to \u003ccode\u003e# type: (value)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe following change was not in any previous stable release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRegenerated the \u003ccode\u003e_width_table.py\u003c/code\u003e and added tests for the Khmer language (\u003ca href=\"https://redirect.github.com/psf/black/issues/4253\"\u003e#4253\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis release alo bumps \u003ccode\u003epathspec\u003c/code\u003e to v1 and fixes inconsistencies with Git's\n\u003ccode\u003e.gitignore\u003c/code\u003e logic (\u003ca href=\"https://redirect.github.com/psf/black/issues/4958\"\u003e#4958\u003c/a\u003e). Now, files will be ignored if a pattern matches them, even\nif the parent directory is directly unignored. For example, Black would previously\nformat \u003ccode\u003eexclude/not_this/foo.py\u003c/code\u003e with this \u003ccode\u003e.gitignore\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eexclude/\n!exclude/not_this/\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNow, \u003ccode\u003eexclude/not_this/foo.py\u003c/code\u003e will remain ignored. To ensure \u003ccode\u003eexclude/not_this/\u003c/code\u003e and\nall of it's children are included in formatting (and in Git), use this \u003ccode\u003e.gitignore\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e*/exclude/*\n!*/exclude/not_this/\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThis new behavior matches Git. The leading \u003ccode\u003e*/\u003c/code\u003e are only necessary if you wish to ignore\nmatching subdirectories (like the previous behavior did), and not just matching root\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/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.1.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cp\u003eIntroduces the 2026 stable style (\u003ca href=\"https://redirect.github.com/psf/black/issues/4892\"\u003e#4892\u003c/a\u003e), stabilizing the following changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ealways_one_newline_after_import\u003c/code\u003e: Always force one blank line after import\nstatements, except when the line after the import is a comment or an import statement\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4489\"\u003e#4489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_fmt_skip_in_one_liners\u003c/code\u003e: Fix \u003ccode\u003e# fmt: skip\u003c/code\u003e behavior on one-liner declarations,\nsuch as \u003ccode\u003edef foo(): return \u0026quot;mock\u0026quot; # fmt: skip\u003c/code\u003e, where previously the declaration would\nhave been incorrectly collapsed (\u003ca href=\"https://redirect.github.com/psf/black/issues/4800\"\u003e#4800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_module_docstring_detection\u003c/code\u003e: Fix module docstrings being treated as normal\nstrings if preceded by comments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4764\"\u003e#4764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_type_expansion_split\u003c/code\u003e: Fix type expansions split in generic functions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emultiline_string_handling\u003c/code\u003e: Make expressions involving multiline strings more compact\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/1879\"\u003e#1879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enormalize_cr_newlines\u003c/code\u003e: Add \u003ccode\u003e\\r\u003c/code\u003e style newlines to the potential newlines to\nnormalize file newlines both from and to (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eremove_parens_around_except_types\u003c/code\u003e: Remove parentheses around multiple exception\ntypes in \u003ccode\u003eexcept\u003c/code\u003e and \u003ccode\u003eexcept*\u003c/code\u003e without \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\u003e\u003ccode\u003eremove_parens_from_assignment_lhs\u003c/code\u003e: Remove unnecessary parentheses from the left-hand\nside of assignments while preserving magic trailing commas and intentional multiline\nformatting (\u003ca href=\"https://redirect.github.com/psf/black/issues/4865\"\u003e#4865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estandardize_type_comments\u003c/code\u003e: Format type comments which have zero or more spaces\nbetween \u003ccode\u003e#\u003c/code\u003e and \u003ccode\u003etype:\u003c/code\u003e or between \u003ccode\u003etype:\u003c/code\u003e and value to \u003ccode\u003e# type: (value)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe following change was not in any previous stable release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRegenerated the \u003ccode\u003e_width_table.py\u003c/code\u003e and added tests for the Khmer language (\u003ca href=\"https://redirect.github.com/psf/black/issues/4253\"\u003e#4253\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis release alo bumps \u003ccode\u003epathspec\u003c/code\u003e to v1 and fixes inconsistencies with Git's\n\u003ccode\u003e.gitignore\u003c/code\u003e logic (\u003ca href=\"https://redirect.github.com/psf/black/issues/4958\"\u003e#4958\u003c/a\u003e). Now, files will be ignored if a pattern matches them, even\nif the parent directory is directly unignored. For example, Black would previously\nformat \u003ccode\u003eexclude/not_this/foo.py\u003c/code\u003e with this \u003ccode\u003e.gitignore\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eexclude/\n!exclude/not_this/\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNow, \u003ccode\u003eexclude/not_this/foo.py\u003c/code\u003e will remain ignored. To ensure \u003ccode\u003eexclude/not_this/\u003c/code\u003e and\nall of it's children are included in formatting (and in Git), use this \u003ccode\u003e.gitignore\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e*/exclude/*\n!*/exclude/not_this/\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThis new behavior matches Git. The leading \u003ccode\u003e*/\u003c/code\u003e are only necessary if you wish to ignore\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/psf/black/commit/6305bf1ae645ab7541be4f5028a86239316178eb\"\u003e\u003ccode\u003e6305bf1\u003c/code\u003e\u003c/a\u003e Prepare 2026.1.0 release (\u003ca href=\"https://redirect.github.com/psf/black/issues/4892\"\u003e#4892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/e71305bee302f7f9016b228361e5ae69669dca7b\"\u003e\u003ccode\u003ee71305b\u003c/code\u003e\u003c/a\u003e Bump pypa/cibuildwheel from 3.3.0 to 3.3.1 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4961\"\u003e#4961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/21a2a8c2b1d0c8d47bc00cc59591470f6a9e2307\"\u003e\u003ccode\u003e21a2a8c\u003c/code\u003e\u003c/a\u003e Fix Shutdown multiprocessing Manager in schedule_formatting (\u003ca href=\"https://redirect.github.com/psf/black/issues/4952\"\u003e#4952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/e3146cea4245fcee29d007cb45d9faaf63271586\"\u003e\u003ccode\u003ee3146ce\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4919\"\u003e#4919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/fe1fbc4fdfa03fa1d460f975b8aca77e4b4f1a4a\"\u003e\u003ccode\u003efe1fbc4\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4923\"\u003e#4923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/2b4b7fcfe00bb0d99322e07e87fc2f0992f7a4d8\"\u003e\u003ccode\u003e2b4b7fc\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4922\"\u003e#4922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/d745be69bfa9d85ec2ef6e5f9b7ec7e253b5e8ab\"\u003e\u003ccode\u003ed745be6\u003c/code\u003e\u003c/a\u003e docs: document --force-exclude for pre-commit workflows (\u003ca href=\"https://redirect.github.com/psf/black/issues/4957\"\u003e#4957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/b41acd6ebbe76e18b49286166924f73f01c3fd02\"\u003e\u003ccode\u003eb41acd6\u003c/code\u003e\u003c/a\u003e Various CI and doc refactors (\u003ca href=\"https://redirect.github.com/psf/black/issues/4928\"\u003e#4928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/6f43612766da4a2f275b575af0802c3e73b6ed83\"\u003e\u003ccode\u003e6f43612\u003c/code\u003e\u003c/a\u003e Handle pathspec v1 changes (\u003ca href=\"https://redirect.github.com/psf/black/issues/4958\"\u003e#4958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/200c550aff44372f801a6d826a361cb26f45a504\"\u003e\u003ccode\u003e200c550\u003c/code\u003e\u003c/a\u003e Bump furo from 2025.9.25 to 2025.12.19 in /docs (\u003ca href=\"https://redirect.github.com/psf/black/issues/4933\"\u003e#4933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/25.9.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.10.7 to 7.13.2\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.2 — 2026-01-25\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: when Python is installed via symlinks, for example with Homebrew, the\nstandard library files could be incorrectly included in coverage reports.\nThis is now fixed, closing \u003ccode\u003eissue 2115\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: if a data file is created with no read permissions, the combine step\nwould fail completely. Now a warning is issued and the file is skipped.\nCloses \u003ccode\u003eissue 2117\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2115: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2115\"\u003ecoveragepy/coveragepy#2115\u003c/a\u003e\n.. _issue 2117: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2117\"\u003ecoveragepy/coveragepy#2117\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-1:\u003c/p\u003e\n\u003ch2\u003eVersion 7.13.1 — 2025-12-28\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded: the JSON report now includes a \u003ccode\u003e\u0026quot;start_line\u0026quot;\u003c/code\u003e key for function and\nclass regions, indicating the first line of the region in the source. Closes\n\u003ccode\u003eissue 2110\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded: The \u003ccode\u003edebug data\u003c/code\u003e command now takes file names as arguments on the\ncommand line, so you can inspect specific data files without needing to set\nthe \u003ccode\u003eCOVERAGE_FILE\u003c/code\u003e environment variable.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the JSON report used to report module docstrings as executed lines,\nwhich no other report did, as described in \u003ccode\u003eissue 2105\u003c/code\u003e_. This is now fixed,\nthanks to Jianrong Zhao.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: coverage.py uses a more disciplined approach to detecting where\nthird-party code is installed, and avoids measuring it. This shouldn't change\nany behavior. If you find that it does, please get in touch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerformance: data files that will be combined now record their hash as part\nof the file name. This lets us skip duplicate data more quickly, speeding the\ncombining step.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDocs: added a section explaining more about what is considered a missing\nbranch and how it is reported: :ref:\u003ccode\u003ebranch_explain\u003c/code\u003e, as requested in \u003ccode\u003eissue 1597\u003c/code\u003e\u003cem\u003e. Thanks to \u003ccode\u003eAyisha Mohammed \u0026lt;pull 2092_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTests: the test suite misunderstood what core was being tested if\n\u003ccode\u003eCOVERAGE_CORE\u003c/code\u003e wasn't set on 3.14+. This is now fixed, closing \u003ccode\u003eissue 2109\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1597: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1597\"\u003ecoveragepy/coveragepy#1597\u003c/a\u003e\n.. _pull 2092: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2092\"\u003ecoveragepy/coveragepy#2092\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/coveragepy/coveragepy/commit/513e97162536cb94aeb94ed3cbe487ca64d13e07\"\u003e\u003ccode\u003e513e971\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/27a8230cf0ef73abca824d2a8622235d9ad8ab96\"\u003e\u003ccode\u003e27a8230\u003c/code\u003e\u003c/a\u003e docs: prep for 7.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/27d8daac216ffef80276515b22cf679f9fabc422\"\u003e\u003ccode\u003e27d8daa\u003c/code\u003e\u003c/a\u003e refactor: plural does more\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a2f248cf095fc49d3599c39befdea6a5552ccd23\"\u003e\u003ccode\u003ea2f248c\u003c/code\u003e\u003c/a\u003e fix: stdlib might be through a symlink. \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2115\"\u003e#2115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/bc52a22953759f71c291d31e7d17faf9903c0667\"\u003e\u003ccode\u003ebc52a22\u003c/code\u003e\u003c/a\u003e debug: re-organize Matchers to show more of what they do\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f338d816ba7fcd23934a9397d15450593f0f20d9\"\u003e\u003ccode\u003ef338d81\u003c/code\u003e\u003c/a\u003e debug: build is a tuple, don't show it on two lines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/92020e469ab6c80cbe24786d0250a571d5f569cf\"\u003e\u003ccode\u003e92020e4\u003c/code\u003e\u003c/a\u003e refactor(test): convert to parametrized\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/6387d0a60d80cb96231ad32fe81be47cddfe1c78\"\u003e\u003ccode\u003e6387d0a\u003c/code\u003e\u003c/a\u003e test: let (most) tests run with no network\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1d31e33cfe0ccef7d87c1f0c6219f55a3d9b5eee\"\u003e\u003ccode\u003e1d31e33\u003c/code\u003e\u003c/a\u003e build: workflows sometimes need more than 10 min\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/62949782b7810d8ffc228ba0e00f81c2ab81cda7\"\u003e\u003ccode\u003e6294978\u003c/code\u003e\u003c/a\u003e refactor: an error message is now uniform across versions\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.10.7...7.13.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `furo` from 2025.9.25 to 2025.12.19\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/releases\"\u003efuro's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the supported Sphinx version range\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\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/pradyunsg/furo/blob/main/docs/changelog.md\"\u003efuro's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19 -- Harmonious Honeydew\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 9.\u003c/li\u003e\n\u003cli\u003eDrop support for Sphinx 6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.09.25 -- Gleaming Green\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChange the dark mode code back to \u003ccode\u003enative\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.07.19 -- Frozen Flame\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Switch to accessible-pygments themes\u003c/li\u003e\n\u003cli\u003e✨ Prefetch the sidebar logos\u003c/li\u003e\n\u003cli\u003e✨ Fix flickering header drop shadow on Safari\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erel=edit\u003c/code\u003e attribute to \u0026quot;Edit this page\u0026quot; link/icon\u003c/li\u003e\n\u003cli\u003eBump NodeJS and npm dependency versions\u003c/li\u003e\n\u003cli\u003eBump Saas \u0026amp; Webpack major versions\u003c/li\u003e\n\u003cli\u003eImprove current page detection to be resilient to sticky elements above header\u003c/li\u003e\n\u003cli\u003eModernise Sass and use \u003ccode\u003e@use\u003c/code\u003e + \u003ccode\u003e@forward\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove top of code \u003ccode\u003eborder-radius\u003c/code\u003e with captions\u003c/li\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value\u003c/li\u003e\n\u003cli\u003eUse distinct images for light and dark mode in the documentation\u003c/li\u003e\n\u003cli\u003eUse the modern Saas Modules\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.08.06 -- Energetic Eminence\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 8\u003c/li\u003e\n\u003cli\u003e✨ Add smoother transitions between breakpoints\u003c/li\u003e\n\u003cli\u003eIncrease specificity of table-wrapper selector\u003c/li\u003e\n\u003cli\u003eAvoid page breaks inside paragraphs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.07.18 -- Dull Denim\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImprove how icons are handled and aligned.\u003c/li\u003e\n\u003cli\u003eImprove scroll event handler.\u003c/li\u003e\n\u003cli\u003eHide the copybutton by default.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003esource_view_link\u003c/code\u003e configuration handling.\u003c/li\u003e\n\u003cli\u003eFix close tag on pencil icon.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.05.06 -- Cheerful Cerulean\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add new custom icons for auto mode, reflecting the currently active theme.\u003c/li\u003e\n\u003cli\u003e✨ Add a view this page button.\u003c/li\u003e\n\u003cli\u003e✨ Add colours and highlighting to \u0026quot;version modified\u0026quot; API helpers.\u003c/li\u003e\n\u003cli\u003e✨ Add release information to various customisation knobs.\u003c/li\u003e\n\u003cli\u003eMake all icons bigger and use a thinner stroke with them.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.04.27 -- Bold Burgundy\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a skip to content link.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/dd9e9f920494f24b9b8dd954ec9d07e0b9d12817\"\u003e\u003ccode\u003edd9e9f9\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.12.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d43f7e98577aa2db8580a83a4d4c3dcf54617de9\"\u003e\u003ccode\u003ed43f7e9\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d27cab5e448c44e366577a80bf99beee6fa941a5\"\u003e\u003ccode\u003ed27cab5\u003c/code\u003e\u003c/a\u003e Bump the supported Sphinx version range\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/12f288eb8c8c57dc751e208545b07f1584bb29a7\"\u003e\u003ccode\u003e12f288e\u003c/code\u003e\u003c/a\u003e Back to development\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\"\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.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.18.2...v1.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 4.3.0 to 4.5.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.5.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: python\u003c/code\u003e with \u003ccode\u003erepo: local\u003c/code\u003e without \u003ccode\u003eadditional_dependencies\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3597\"\u003e#3597\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.5.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epre-commit hazmat\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3585\"\u003e#3585\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.4.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--fail-fast\u003c/code\u003e option to \u003ccode\u003epre-commit run\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3528\"\u003e#3528\u003c/a\u003e PR by \u003ca href=\"https://github.com/JulianMaurin\"\u003e\u003ccode\u003e@​JulianMaurin\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003eruby-build\u003c/code\u003e / \u003ccode\u003erbenv\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3566\"\u003e#3566\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3565\"\u003e#3565\u003c/a\u003e issue by \u003ca href=\"https://github.com/MRigal\"\u003e\u003ccode\u003e@​MRigal\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: unsupported\u003c/code\u003e / \u003ccode\u003elanguage: unsupported_script\u003c/code\u003e as aliases for \u003ccode\u003elanguage: system\u003c/code\u003e / \u003ccode\u003elanguage: script\u003c/code\u003e (which will eventually be deprecated).\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3577\"\u003e#3577\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd support docker-in-docker detection for cgroups v2.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3535\"\u003e#3535\u003c/a\u003e PR by \u003ca href=\"https://github.com/br-rhrbacek\"\u003e\u003ccode\u003e@​br-rhrbacek\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3360\"\u003e#3360\u003c/a\u003e issue by \u003ca href=\"https://github.com/JasonAlt\"\u003e\u003ccode\u003e@​JasonAlt\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle when docker gives \u003ccode\u003eSecurityOptions: null\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3537\"\u003e#3537\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3514\"\u003e#3514\u003c/a\u003e issue by \u003ca href=\"https://github.com/jenstroeger\"\u003e\u003ccode\u003e@​jenstroeger\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix error context for invalid \u003ccode\u003estages\u003c/code\u003e in \u003ccode\u003e.pre-commit-config.yaml\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3576\"\u003e#3576\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.5.1 - 2025-12-16\u003c/h1\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: python\u003c/code\u003e with \u003ccode\u003erepo: local\u003c/code\u003e without \u003ccode\u003eadditional_dependencies\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3597\"\u003e#3597\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.5.0 - 2025-11-22\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epre-commit hazmat\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3585\"\u003e#3585\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.4.0 - 2025-11-08\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--fail-fast\u003c/code\u003e option to \u003ccode\u003epre-commit run\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3528\"\u003e#3528\u003c/a\u003e PR by \u003ca href=\"https://github.com/JulianMaurin\"\u003e\u003ccode\u003e@​JulianMaurin\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003eruby-build\u003c/code\u003e / \u003ccode\u003erbenv\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3566\"\u003e#3566\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3565\"\u003e#3565\u003c/a\u003e issue by \u003ca href=\"https://github.com/MRigal\"\u003e\u003ccode\u003e@​MRigal\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: unsupported\u003c/code\u003e / \u003ccode\u003elanguage: unsupported_script\u003c/code\u003e as aliases\nfor \u003ccode\u003elanguage: system\u003c/code\u003e / \u003ccode\u003elanguage: script\u003c/code\u003e (which will eventually be\ndeprecated).\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3577\"\u003e#3577\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd support docker-in-docker detection for cgroups v2.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3535\"\u003e#3535\u003c/a\u003e PR by \u003ca href=\"https://github.com/br-rhrbacek\"\u003e\u003ccode\u003e@​br-rhrbacek\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3360\"\u003e#3360\u003c/a\u003e issue by \u003ca href=\"https://github.com/JasonAlt\"\u003e\u003ccode\u003e@​JasonAlt\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle when docker gives \u003ccode\u003eSecurityOptions: null\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3537\"\u003e#3537\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3514\"\u003e#3514\u003c/a\u003e issue by \u003ca href=\"https://github.com/jenstroeger\"\u003e\u003ccode\u003e@​jenstroeger\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix error context for invalid \u003ccode\u003estages\u003c/code\u003e in \u003ccode\u003e.pre-commit-config.yaml\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3576\"\u003e#3576\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/8a0630ca1aa7f6d5665effe674ebe2022af17919\"\u003e\u003ccode\u003e8a0630c\u003c/code\u003e\u003c/a\u003e v4.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/fcbc745744377ef2c9fe6a7e1a21c67d797933dc\"\u003e\u003ccode\u003efcbc745\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3597\"\u003e#3597\u003c/a\u003e from pre-commit/empty-setup-py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/51592eececd13b99c40ec477ad8f810799147227\"\u003e\u003ccode\u003e51592ee\u003c/code\u003e\u003c/a\u003e fix python local template when artifact dirs are present\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/67e8faf80baffcb4b79c31b89ca9a413a1cd6776\"\u003e\u003ccode\u003e67e8faf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3596\"\u003e#3596\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/c251e6b6d011b3b262339dc8e109de29b0ff8db1\"\u003e\u003ccode\u003ec251e6b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/98ccafa3ce42b846b9a9be9ed73fbbec7415496d\"\u003e\u003ccode\u003e98ccafa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3593\"\u003e#3593\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/48953556d06f8cdb4248002c1a0044e69e0916b3\"\u003e\u003ccode\u003e4895355\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2cedd58e691f4d3bc6ab266c7d7c28464c3502be\"\u003e\u003ccode\u003e2cedd58\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3588\"\u003e#3588\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/465192d7de58d569776eaaa818c94cb2b962d436\"\u003e\u003ccode\u003e465192d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/fd42f96874279c4f65363bfea5238714419e54d7\"\u003e\u003ccode\u003efd42f96\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3586\"\u003e#3586\u003c/a\u003e from pre-commit/zipapp-sha256-file-not-needed\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.3.0...v4.5.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.13.3 to 0.14.14\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.14.14\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-01-22.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve required parentheses in lambda bodies (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22747\"\u003e#22747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCombine range suppression code diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22613\"\u003e#22613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Second positional argument to \u003ccode\u003eAsset\u003c/code\u003e/\u003ccode\u003eDataset\u003c/code\u003e should not be a dictionary (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22453\"\u003e#22453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect duplicate entries in \u003ccode\u003e__all__\u003c/code\u003e (\u003ccode\u003eRUF068\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22114\"\u003e#22114\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Allow shadowing non-builtin bindings (\u003ccode\u003eUP029\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22749\"\u003e#22749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Apply \u003ccode\u003eUP045\u003c/code\u003e to string arguments of \u003ccode\u003etyping.cast\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22320\"\u003e#22320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pie\u003c/code\u003e] Detect duplicated declared class fields in \u003ccode\u003ePIE794\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22717\"\u003e#22717\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix inconsistent handling of forward references for \u003ccode\u003e__new__\u003c/code\u003e, \u003ccode\u003e__enter__\u003c/code\u003e, \u003ccode\u003e__aenter__\u003c/code\u003e in \u003ccode\u003ePYI034\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22798\"\u003e#22798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Support \u003ccode\u003echeck\u003c/code\u003e parameter in \u003ccode\u003ePT011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22725\"\u003e#22725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add exception for \u003ccode\u003ectypes.Structure._fields_\u003c/code\u003e (\u003ccode\u003eRUF012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22559\"\u003e#22559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMany fixes are now marked unsafe if they would remove comments:\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22656\"\u003e\u003ccode\u003eB009\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22657\"\u003e\u003ccode\u003eB010\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22658\"\u003e\u003ccode\u003eB013\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22659\"\u003e\u003ccode\u003eB014\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22632\"\u003e\u003ccode\u003eB033\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22662\"\u003e\u003ccode\u003eSIM910\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22661\"\u003e\u003ccode\u003eSIM911\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP007\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22774\"\u003e\u003ccode\u003eUP039\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22773\"\u003e\u003ccode\u003eUP041\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP045\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22767\"\u003e\u003ccode\u003eFURB105\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22681\"\u003e\u003ccode\u003eFURB116\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22680\"\u003e\u003ccode\u003eFURB136\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22679\"\u003e\u003ccode\u003eFURB140\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22670\"\u003e\u003ccode\u003eFURB145\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22669\"\u003e\u003ccode\u003eFURB154\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22668\"\u003e\u003ccode\u003eFURB157\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22667\"\u003e\u003ccode\u003eFURB164\u003c/code\u003e\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22666\"\u003e\u003ccode\u003eFURB181\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22665\"\u003e\u003ccode\u003eFURB188\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22663\"\u003e\u003ccode\u003eRUF019\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22664\"\u003e\u003ccode\u003eRUF020\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--exit-non-zero-on-format\u003c/code\u003e to formatter exit codes section (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22761\"\u003e#22761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate contributing guide for adding a new rule (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22779\"\u003e#22779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eFastAPI\u003c/code\u003e] Document fix safety for \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22655\"\u003e#22655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Tweak explanation to focus on latency/efficiency tradeoff (\u003ccode\u003eASYNC110\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22715\"\u003e#22715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Make example error out-of-the-box (\u003ccode\u003ePD002\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22561\"\u003e#22561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB101\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22770\"\u003e#22770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB103\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22769\"\u003e#22769\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/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\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/caiquejjx\"\u003e\u003ccode\u003e@​caiquejjx\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sjyangkevin\"\u003e\u003ccode\u003e@​sjyangkevin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MeGaGiGaGon\"\u003e\u003ccode\u003e@​MeGaGiGaGon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leandrobbraga\"\u003e\u003ccode\u003e@​leandrobbraga\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/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.14.14\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-01-22.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve required parentheses in lambda bodies (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22747\"\u003e#22747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCombine range suppression code diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22613\"\u003e#22613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Second positional argument to \u003ccode\u003eAsset\u003c/code\u003e/\u003ccode\u003eDataset\u003c/code\u003e should not be a dictionary (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22453\"\u003e#22453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect duplicate entries in \u003ccode\u003e__all__\u003c/code\u003e (\u003ccode\u003eRUF068\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22114\"\u003e#22114\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Allow shadowing non-builtin bindings (\u003ccode\u003eUP029\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22749\"\u003e#22749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Apply \u003ccode\u003eUP045\u003c/code\u003e to string arguments of \u003ccode\u003etyping.cast\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22320\"\u003e#22320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pie\u003c/code\u003e] Detect duplicated declared class fields in \u003ccode\u003ePIE794\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22717\"\u003e#22717\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix inconsistent handling of forward references for \u003ccode\u003e__new__\u003c/code\u003e, \u003ccode\u003e__enter__\u003c/code\u003e, \u003ccode\u003e__aenter__\u003c/code\u003e in \u003ccode\u003ePYI034\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22798\"\u003e#22798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Support \u003ccode\u003echeck\u003c/code\u003e parameter in \u003ccode\u003ePT011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22725\"\u003e#22725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add exception for \u003ccode\u003ectypes.Structure._fields_\u003c/code\u003e (\u003ccode\u003eRUF012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22559\"\u003e#22559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMany fixes are now marked unsafe if they would remove comments:\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22656\"\u003e\u003ccode\u003eB009\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22657\"\u003e\u003ccode\u003eB010\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22658\"\u003e\u003ccode\u003eB013\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22659\"\u003e\u003ccode\u003eB014\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22632\"\u003e\u003ccode\u003eB033\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22662\"\u003e\u003ccode\u003eSIM910\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22661\"\u003e\u003ccode\u003eSIM911\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP007\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22774\"\u003e\u003ccode\u003eUP039\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22773\"\u003e\u003ccode\u003eUP041\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP045\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22767\"\u003e\u003ccode\u003eFURB105\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22681\"\u003e\u003ccode\u003eFURB116\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22680\"\u003e\u003ccode\u003eFURB136\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22679\"\u003e\u003ccode\u003eFURB140\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22670\"\u003e\u003ccode\u003eFURB145\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22669\"\u003e\u003ccode\u003eFURB154\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22668\"\u003e\u003ccode\u003eFURB157\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22667\"\u003e\u003ccode\u003eFURB164\u003c/code\u003e\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22666\"\u003e\u003ccode\u003eFURB181\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22665\"\u003e\u003ccode\u003eFURB188\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22663\"\u003e\u003ccode\u003eRUF019\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22664\"\u003e\u003ccode\u003eRUF020\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--exit-non-zero-on-format\u003c/code\u003e to formatter exit codes section (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22761\"\u003e#22761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate contributing guide for adding a new rule (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22779\"\u003e#22779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eFastAPI\u003c/code\u003e] Document fix safety for \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22655\"\u003e#22655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Tweak explanation to focus on latency/efficiency tradeoff (\u003ccode\u003eASYNC110\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22715\"\u003e#22715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Make example error out-of-the-box (\u003ccode\u003ePD002\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22561\"\u003e#22561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB101\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22770\"\u003e#22770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB103\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22769\"\u003e#22769\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/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\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/caiquejjx\"\u003e\u003ccode\u003e@​caiquejjx\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sjyangkevin\"\u003e\u003ccode\u003e@​sjyangkevin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MeGaGiGaGon\"\u003e\u003ccode\u003e@​MeGaGiGaGon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leandrobbraga\"\u003e\u003ccode\u003e@​leandrobbraga\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\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/8b2e7b36f246b990fe473a84eef25ff429e59ecf\"\u003e\u003ccode\u003e8b2e7b3\u003c/code\u003e\u003c/a\u003e Prepare release v0.14.14 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22813\"\u003e#22813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4c7d1f50fd8d1baf06a3c8885ecd0ded0113d383\"\u003e\u003ccode\u003e4c7d1f5\u003c/code\u003e\u003c/a\u003e [ty] Infer \u003ccode\u003eTypedDict\u003c/code\u003e types with \u0026gt;=1 required key as being always truthy (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b7de4341535ff2b299695335e0a7b9ebaf297348\"\u003e\u003ccode\u003eb7de434\u003c/code\u003e\u003c/a\u003e add CCfW hooks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22803\"\u003e#22803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b912dfc8788f8f8c351767899df6b72ce3366352\"\u003e\u003ccode\u003eb912dfc\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epyupgrade\u003c/code\u003e] Apply \u003ccode\u003eUP045\u003c/code\u003e to string arguments of \u003ccode\u003etyping.cast\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22320\"\u003e#22320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1ff062d1cccb8025de184a55c6dfe469a4293249\"\u003e\u003ccode\u003e1ff062d\u003c/code\u003e\u003c/a\u003e [ty] Improve completion rankings for raise-from/except contexts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22775\"\u003e#22775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7e408a51d24db2bca248bb90f2f7938f83efd22b\"\u003e\u003ccode\u003e7e408a5\u003c/code\u003e\u003c/a\u003e Update dependency wrangler to v4.59.1 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22793\"\u003e#22793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ceb876b82300bd237d11e3eb77c46fcf3d3afe85\"\u003e\u003ccode\u003eceb876b\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix inconsistent handling of forward references for \u003ccode\u003e__new__\u003c/code\u003e,...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c5b4ee68c90faf0e609fa6553a171a7ba60ebdcb\"\u003e\u003ccode\u003ec5b4ee6\u003c/code\u003e\u003c/a\u003e [ty] Support solving generics involving PEP 695 type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22678\"\u003e#22678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b9a61293153f43df9963c727539309b76ac4756d\"\u003e\u003ccode\u003eb9a6129\u003c/code\u003e\u003c/a\u003e [ty] Improve support for kwarg splats in dictionary literals (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22781\"\u003e#22781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f516d47ceb7f6a0c3a95eaaa2c7451a32b5d7120\"\u003e\u003ccode\u003ef516d47\u003c/code\u003e\u003c/a\u003e Update contributing guide for adding a new rule (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22779\"\u003e#22779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.13.3...0.14.14\"\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.2 to 9.0.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\u003e9.0.2\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.2 (2025-12-06)\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/13896\"\u003e#13896\u003c/a\u003e: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.\u003c/p\u003e\n\u003cp\u003eYou may enable it again by passing \u003ccode\u003e-p terminalprogress\u003c/code\u003e. We may enable it by default again once compatibility improves in the future.\u003c/p\u003e\n\u003cp\u003eAdditionally, when the environment variable \u003ccode\u003eTERM\u003c/code\u003e is \u003ccode\u003edumb\u003c/code\u003e, the escape codes are no longer emitted, even if the plugin is enabled.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the \u003ccode\u003etmp_path_retention_count\u003c/code\u003e settings in the API reference from number to string.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute was changed in a breaking manner in pytest 9.0.0.\nDue to its usage in the ecosystem, it is now restored to working order using a compatibility shim.\nIt will be deprecated in pytest 9.1 and removed in pytest 10.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13965\"\u003e#13965\u003c/a\u003e: Fixed quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10.\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/4492\"\u003e#4492\u003c/a\u003e: The API Reference now contains cross-reference-able documentation of \u003ccode\u003epytest's command-line flags \u0026lt;command-line-flags\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.0.1\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.1 (2025-11-12)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13895\"\u003e#13895\u003c/a\u003e: Restore support for skipping tests via \u003ccode\u003eraise unittest.SkipTest\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress plugin added in pytest 9.0 is now automatically disabled when iTerm2 is detected, it generated desktop notifications instead of the desired functionality.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the verbosity settings in the API reference from number to string.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13910\"\u003e#13910\u003c/a\u003e: Fixed \u003c!-- raw HTML omitted --\u003eUserWarning: Do not expect file_or_dir\u003c!-- raw HTML omitted --\u003e on some earlier Python 3.12 and 3.13 point versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePackaging updates and notes for downstreams\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\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/13891\"\u003e#13891\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13942\"\u003e#13942\u003c/a\u003e: The CI/CD part of the release automation is now capable of\ncreating GitHub Releases without having a Git checkout on\ndisk -- by \u003ccode\u003ebluetech\u003c/code\u003e and \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/3d10b5148e03eb82b3ee29181dbdc73cf82699e2\"\u003e\u003ccode\u003e3d10b51\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/188750b725add8c3400eee6fbb6b80559c296d69\"\u003e\u003ccode\u003e188750b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14030\"\u003e#14030\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/1e4b01d1f...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b7d7bef90cb9a6db8ac1d3dd5b9ae0eb9abd6c58\"\u003e\u003ccode\u003eb7d7bef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14014\"\u003e#14014\u003c/a\u003e from bluetech/compat-note\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bd08e85ac76614ff5ca9ae338aee8d8b06c8fae0\"\u003e\u003ccode\u003ebd08e85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14013\"\u003e#14013\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/922b60377...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bc783862991241c442c9f9c068e51737ec15ea10\"\u003e\u003ccode\u003ebc78386\u003c/code\u003e\u003c/a\u003e Add CLI options reference documentation (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13930\"\u003e#13930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/5a4e398ce89bc23d2cf3fd98c042fdffb6fa8afa\"\u003e\u003ccode\u003e5a4e398\u003c/code\u003e\u003c/a\u003e Fix docs typo (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14005\"\u003e#14005\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14008\"\u003e#14008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/d7ae6df394398168bf9d926f803c26849c8f07ee\"\u003e\u003ccode\u003ed7ae6df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14006\"\u003e#14006\u003c/a\u003e from pytest-dev/maintenance/update-plugin-list-tmpl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/556f6a22e12d13d1ffeceaf64424eb95d5e0fb87\"\u003e\u003ccode\u003e556f6a2\u003c/code\u003e\u003c/a\u003e pre-commit: fix rst-lint after new release (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13999\"\u003e#13999\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14001\"\u003e#14001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c60fbe63a26f64a42738e3f3527a8f79024fdf50\"\u003e\u003ccode\u003ec60fbe6\u003c/code\u003e\u003c/a\u003e Fix quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/73d9b011183d9a1c4a7007c1119d97a6e627788e\"\u003e\u003ccode\u003e73d9b01\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13995\"\u003e#13995\u003c/a\u003e from nicoddemus/patchback/backports/9.0.x/1b5200c0f...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.4.2...9.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-click` from 6.1.0 to 6.2.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/click-contrib/sphinx-click/commit/e8eb75e292ff6df69230420d992a34e68a7385d0\"\u003e\u003ccode\u003ee8eb75e\u003c/code\u003e\u003c/a\u003e add release notes with reno\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/click-contrib/sphinx-click/commit/46f6445bb67c76f2a4b638f4003862ee85dafba1\"\u003e\u003ccode\u003e46f6445\u003c/code\u003e\u003c/a\u003e fix tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/click-contrib/sphinx-click/commit/722f4217c1bf6dfd68f9e2c26aa52d590973b11e\"\u003e\u003ccode\u003e722f421\u003c/code\u003e\u003c/a\u003e print \u0026quot;Usage\u0026quot; before printing the command usage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/click-contrib/sphinx-click/commit/ebc38179a0229435becdd64026fa88be7ab2d60c\"\u003e\u003ccode\u003eebc3817\u003c/code\u003e\u003c/a\u003e Fix readthedocs build (redux)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/click-contrib/sphinx-click/commit/9ee09f9d3252fd6e8bce9578eca82411e89c76e5\"\u003e\u003ccode\u003e9ee09f9\u003c/code\u003e\u003c/a\u003e Fix readthedocs build\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/click-contrib/sphinx-click/compare/6.1.0...6.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.10.6 to 3.10.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: v3.10.8\u003c/h2\u003e\n\u003cp\u003eThis is a bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eThe primary highlights of this release are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eProperly allow freethreaded mode in the MacOS backend\u003c/li\u003e\n\u003cli\u003eBetter error handling for MacOS backend\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eREL: v3.10.7\u003c/h2\u003e\n\u003cp\u003eThis is the latest bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eThe most important update in this release is that the minimum version\nof \u003ccode\u003epyparsing\u003c/code\u003e has been updated to version 3.0.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/1392cbe3c79cdb93f9282747841d648770f60249\"\u003e\u003ccode\u003e1392cbe\u003c/code\u003e\u003c/a\u003e REL: v3.10.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/0b9ebb35f8310f22eb7f932b2ae14befb1f40b6f\"\u003e\u003ccode\u003e0b9ebb3\u003c/code\u003e\u003c/a\u003e Doc release prep v3.10.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/bc7b5c4377ce2544e8936255c51c1ff7cd0c5a85\"\u003e\u003ccode\u003ebc7b5c4\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.10.7-doc' into v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/86b38d3f29aa2af2ddcbd1895433117caa0fba47\"\u003e\u003ccode\u003e86b38d3\u003c/code\u003e\u003c/a\u003e Github stats v3.10.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/9512188e42f9d221f83869113c44f99fe1832a0f\"\u003e\u003ccode\u003e9512188\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30717\"\u003e#30717\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-30714-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/d300769285e2c920804134e40ec83837eabe16d8\"\u003e\u003ccode\u003ed300769\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30714\"\u003e#30714\u003c/a\u003e: FIX: Gracefully handle numpy arrays as input to check_in_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/799bc9561daea5b5578f888817cb45c9321a0463\"\u003e\u003ccode\u003e799bc95\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30711\"\u003e#30711\u003c/a\u003e from ngoldbaum/v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/134000ba19a4354da2ad1084627039e05c936754\"\u003e\u003ccode\u003e134000b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30697\"\u003e#30697\u003c/a\u003e from ngoldbaum/fix-plotting-on-worker-threads\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/5b8e219d70f1daa443330eb6a5a6211506b37362\"\u003e\u003ccode\u003e5b8e219\u003c/code\u003e\u003c/a\u003e TST: Run macosx backends in a subprocess\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/878e71a95006d3aec9505f3bd836968951fdd163\"\u003e\u003ccode\u003e878e71a\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/29810\"\u003e#29810\u003c/a\u003e: Declare free-threaded support in MacOS backend extension ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.10.6...v3.10.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `deptry` from 0.23.1 to 0.24.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fpgmaas/deptry/releases\"\u003edeptry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.24.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003ch4\u003ePython 3.9 support dropped\u003c/h4\u003e\n\u003cp\u003eSupport for Python 3.9 has been dropped, as it has reached its end of life.\u003c/p\u003e\n\u003ch4\u003ePyPy 3.10 support dropped, 3.11 added\u003c/h4\u003e\n\u003cp\u003eSupport for PyPy 3.10 has been dropped, since it is unsupported. We now only test against PyPy 3.11, and only publish wheels for this version.\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd GitHub Actions annotations reporter (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1059\"\u003e#1059\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support...\n\n_Description has been truncated_","html_url":"https://github.com/statisticsnorway/ssb-pre-system/pull/122","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/statisticsnorway%2Fssb-pre-system/issues/122","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/122/packages"}},{"old_version":"1.8.0","new_version":"1.9.0","update_type":"minor","path":null,"pr_created_at":"2026-01-25T22:11:22.000Z","version_change":"1.8.0 → 1.9.0","issue":{"uuid":"3853934615","node_id":"PR_kwDOHIBnos6_Q6dp","number":469,"state":"open","title":"build(deps): bump the simple group across 1 directory with 39 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-25T22:11:22.000Z","updated_at":"2026-02-02T00:00:47.721Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"simple","update_count":39,"packages":[{"name":"boto3-stubs","old_version":"1.38.3","new_version":"1.42.34"},{"name":"boto3","old_version":"1.38.3","new_version":"1.42.34","repository_url":"https://github.com/boto/boto3"},{"name":"click","old_version":"8.1.3","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"colored","old_version":"2.3.0","new_version":"2.3.1"},{"name":"humanize","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python-humanize/humanize"},{"name":"ipympl","old_version":"0.9.7","new_version":"0.10.0","repository_url":"https://github.com/matplotlib/ipympl"},{"name":"ipywidgets","old_version":"8.1.6","new_version":"8.1.8","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"jupyterlab","old_version":"4.4.1","new_version":"4.5.3","repository_url":"https://github.com/jupyterlab/jupyterlab"},{"name":"matplotlib","old_version":"3.10.1","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"matplotlib-stubs","old_version":"0.2.0","new_version":"0.3.11","repository_url":"https://github.com/hoel-bagard/matplotlib-stubs"},{"name":"networkx","old_version":"3.4.2","new_version":"3.6.1","repository_url":"https://github.com/networkx/networkx"},{"name":"pandas-stubs","old_version":"2.2.3.250308","new_version":"2.3.3.260113","repository_url":"https://github.com/pandas-dev/pandas-stubs"},{"name":"prettytable","old_version":"3.16.0","new_version":"3.17.0","repository_url":"https://github.com/prettytable/prettytable"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.1","repository_url":"https://github.com/giampaolo/psutil"},{"name":"psycopg","old_version":"3.2.6","new_version":"3.3.2","repository_url":"https://github.com/psycopg/psycopg"},{"name":"psycopg-binary","old_version":"3.2.6","new_version":"3.3.2","repository_url":"https://github.com/psycopg/psycopg"},{"name":"pydantic","old_version":"2.8.2","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pymysql","old_version":"1.1.1","new_version":"1.1.2","repository_url":"https://github.com/PyMySQL/PyMySQL"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.19.1"},{"name":"ruff","old_version":"0.0.292","new_version":"0.14.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"scipy","old_version":"1.15.2","new_version":"1.17.0","repository_url":"https://github.com/scipy/scipy"},{"name":"shtab","old_version":"1.7.2","new_version":"1.8.0","repository_url":"https://github.com/iterative/shtab"},{"name":"sqlparse","old_version":"0.5.3","new_version":"0.5.5","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"twine","old_version":"6.1.0","new_version":"6.2.0","repository_url":"https://github.com/pypa/twine"},{"name":"types-markdown","old_version":"3.8.0.20250415","new_version":"3.10.0.20251106","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-psutil","old_version":"7.0.0.20250401","new_version":"7.2.1.20260116","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-requests","old_version":"2.32.0.20250328","new_version":"2.32.4.20260107","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"xxhash","old_version":"3.5.0","new_version":"3.6.0","repository_url":"https://github.com/ifduyue/python-xxhash"},{"name":"yamllint","old_version":"1.37.0","new_version":"1.38.0","repository_url":"https://github.com/adrienverge/yamllint"},{"name":"confluent-kafka","old_version":"2.6.1","new_version":"2.13.0","repository_url":"https://github.com/confluentinc/confluent-kafka-python"},{"name":"fastavro","old_version":"1.10.0","new_version":"1.12.1","repository_url":"https://github.com/fastavro/fastavro"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"minio","old_version":"7.2.15","new_version":"7.2.20","repository_url":"https://github.com/minio/minio-py"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"pip","old_version":"25.1","new_version":"25.3","repository_url":"https://github.com/pypa/pip"},{"name":"setuptools","old_version":"80.0.0","new_version":"80.10.1","repository_url":"https://github.com/pypa/setuptools"}],"path":null,"ecosystem":"pip"},"body":"Bumps the simple group with 39 updates in the /ci/builder directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [boto3-stubs[ec2,iam,kinesis,s3,sqs,ssm,sts]](https://github.com/youtype/mypy_boto3_builder) | `1.38.3` | `1.42.34` |\n| [boto3](https://github.com/boto/boto3) | `1.38.3` | `1.42.34` |\n| [click](https://github.com/pallets/click) | `8.1.3` | `8.3.1` |\n| [colored](https://gitlab.com/dslackw/colored) | `2.3.0` | `2.3.1` |\n| [humanize](https://github.com/python-humanize/humanize) | `4.12.2` | `4.15.0` |\n| [ipympl](https://github.com/matplotlib/ipympl) | `0.9.7` | `0.10.0` |\n| [ipywidgets](https://github.com/jupyter-widgets/ipywidgets) | `8.1.6` | `8.1.8` |\n| [jupyterlab](https://github.com/jupyterlab/jupyterlab) | `4.4.1` | `4.5.3` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.1` | `3.10.8` |\n| [matplotlib-stubs](https://github.com/hoel-bagard/matplotlib-stubs) | `0.2.0` | `0.3.11` |\n| [networkx](https://github.com/networkx/networkx) | `3.4.2` | `3.6.1` |\n| [pandas-stubs](https://github.com/pandas-dev/pandas-stubs) | `2.2.3.250308` | `2.3.3.260113` |\n| [prettytable](https://github.com/prettytable/prettytable) | `3.16.0` | `3.17.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.1` |\n| [psycopg](https://github.com/psycopg/psycopg) | `3.2.6` | `3.3.2` |\n| [psycopg-binary](https://github.com/psycopg/psycopg) | `3.2.6` | `3.3.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.8.2` | `2.12.5` |\n| [pymysql](https://github.com/PyMySQL/PyMySQL) | `1.1.1` | `1.1.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| ruamel-yaml | `0.18.10` | `0.19.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.0.292` | `0.14.14` |\n| [scipy](https://github.com/scipy/scipy) | `1.15.2` | `1.17.0` |\n| [shtab](https://github.com/iterative/shtab) | `1.7.2` | `1.8.0` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.3` | `0.5.5` |\n| [twine](https://github.com/pypa/twine) | `6.1.0` | `6.2.0` |\n| [types-markdown](https://github.com/typeshed-internal/stub_uploader) | `3.8.0.20250415` | `3.10.0.20251106` |\n| [types-psutil](https://github.com/typeshed-internal/stub_uploader) | `7.0.0.20250401` | `7.2.1.20260116` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250328` | `2.32.4.20260107` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [xxhash](https://github.com/ifduyue/python-xxhash) | `3.5.0` | `3.6.0` |\n| [yamllint](https://github.com/adrienverge/yamllint) | `1.37.0` | `1.38.0` |\n| [confluent-kafka](https://github.com/confluentinc/confluent-kafka-python) | `2.6.1` | `2.13.0` |\n| [fastavro](https://github.com/fastavro/fastavro) | `1.10.0` | `1.12.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [minio](https://github.com/minio/minio-py) | `7.2.15` | `7.2.20` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [pip](https://github.com/pypa/pip) | `25.1` | `25.3` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.0.0` | `80.10.1` |\n\n\nUpdates `boto3-stubs[ec2,iam,kinesis,s3,sqs,ssm,sts]` from 1.38.3 to 1.42.34\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\"\u003eboto3-stubs[ec2,iam,kinesis,s3,sqs,ssm,sts]'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 `boto3` from 1.38.3 to 1.42.34\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/9a285e6beab78c1f4c97047674ec09ac5451c4d1\"\u003e\u003ccode\u003e9a285e6\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.34'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/29574158e22c3b2d6ca044eef1dc054d28d73485\"\u003e\u003ccode\u003e2957415\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.34\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/8e1fd2e6e5c1fd6236cacf2dc9064d55d8baf07b\"\u003e\u003ccode\u003e8e1fd2e\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/9cadce52dae6e58e450a9ac0745a721dda8a4044\"\u003e\u003ccode\u003e9cadce5\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/ee24f15c3013be4f4c6e76bfbc948b910e6f8f35\"\u003e\u003ccode\u003eee24f15\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b0f2cf318d9bef8eaf3f11cd81b22ce67810ea82\"\u003e\u003ccode\u003eb0f2cf3\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.33\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/6e690ed2966406d4b53532a44e70c93370368ae6\"\u003e\u003ccode\u003e6e690ed\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b84ec5ebd8880b77e998bfdd28984f214c3f1fa3\"\u003e\u003ccode\u003eb84ec5e\u003c/code\u003e\u003c/a\u003e Add BOTOCORE_TCP_KEEPALIVE environment variable documentation (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4705\"\u003e#4705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/36cebd34052db2fc7449b85ac04f903fb40f8b2f\"\u003e\u003ccode\u003e36cebd3\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d4d10440677e98c5c15fb6c84cc605bd7401fd74\"\u003e\u003ccode\u003ed4d1044\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.38.3...1.42.34\"\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.3 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\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\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/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\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 \u003ccode\u003eCliRunner\u003c/code\u003e. :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.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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.1.3...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `colored` from 2.3.0 to 2.3.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://gitlab.com/dslackw/colored/blob/master/CHANGES.md\"\u003ecolored's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[2.3.1] - 2025-07-28\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor: Optimized Windows Terminal Mode initialization: Moved \u003ccode\u003eColored.enable_windows_terminal_mode()\u003c/code\u003e call from \u003ccode\u003eColored.__init__\u003c/code\u003e to module-level execution. This ensures the Windows virtual terminal processing is enabled only once when the \u003ccode\u003ecolored\u003c/code\u003e module is imported, instead of on every \u003ccode\u003eColored\u003c/code\u003e object instantiation. This change improves performance by avoiding redundant API calls and checks.\u003c/li\u003e\n\u003cli\u003eRefactor: Reduce \u003ccode\u003eColored\u003c/code\u003e instance attributes: Removed redundant instance attributes (\u003ccode\u003e_ESC\u003c/code\u003e, \u003ccode\u003e_END\u003c/code\u003e, \u003ccode\u003e_STYLES\u003c/code\u003e, etc.) from the \u003ccode\u003eColored\u003c/code\u003e class's \u003ccode\u003e__init__\u003c/code\u003e method. These constants are now accessed directly from the \u003ccode\u003eLibrary\u003c/code\u003e module, reducing memory footprint per instance and improving adherence to Pylint's \u003ccode\u003eR0902\u003c/code\u003e warning.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved static analysis warnings in \u003ccode\u003eenable_windows_terminal_mode()\u003c/code\u003e: Modified \u003ccode\u003eenable_windows_terminal_mode()\u003c/code\u003e to ensure consistent return statements and handle all possible execution paths explicitly. This addresses \u003ccode\u003emypy\u003c/code\u003e's \u0026quot;Missing return statement\u0026quot; error and \u003ccode\u003epylint\u003c/code\u003e's \u0026quot;inconsistent-return-statements\u0026quot; warning by making all return paths explicit and robustly handling potential \u003ccode\u003ectypes\u003c/code\u003e related exceptions. The return type hint was also updated to \u003ccode\u003eOptional[bool]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eResolved type hinting and tuple unpacking warnings in \u003ccode\u003eUtilities.is_percentage()\u003c/code\u003e: Modified the \u003ccode\u003eUtilities.is_percentage()\u003c/code\u003e method to explicitly return a fixed-length \u003ccode\u003etuple[int, int, int]\u003c/code\u003e. This addresses \u003ccode\u003emypy\u003c/code\u003e's \u0026quot;Incompatible return value type\u0026quot; error and \u003ccode\u003epylint\u003c/code\u003e's \u0026quot;unbalanced-tuple-unpacking\u0026quot; warning by ensuring consistent and statically verifiable return types.\u003c/li\u003e\n\u003cli\u003eRefined type validation and error handling in \u003ccode\u003eControls.nav()\u003c/code\u003e: Eliminated the redundant \u003ccode\u003e_is_str_object\u003c/code\u003e static method. Integrated string type validation directly into the \u003ccode\u003enav()\u003c/code\u003e method. Replaced \u003ccode\u003eAttributeError\u003c/code\u003e with \u003ccode\u003eTypeError\u003c/code\u003e for improved semantic clarity when handling invalid argument types.\u003c/li\u003e\n\u003cli\u003eEnsured \u003ccode\u003etest_hex_1.py\u003c/code\u003e correctly uses nearest ANSI codes for hex color representation, preventing \u003ccode\u003eInvalidHexColor\u003c/code\u003e exceptions during gradient and random color tests.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dslackw/colored/commit/9af8fd381f2b907f27005479fc17e2619de52904\"\u003e\u003ccode\u003e9af8fd3\u003c/code\u003e\u003c/a\u003e Updated for version 2.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dslackw/colored/commit/1a9fabd317896cc0b31479a922de35a2777e3113\"\u003e\u003ccode\u003e1a9fabd\u003c/code\u003e\u003c/a\u003e Updated for date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dslackw/colored/commit/6e26a657972662d2efd4d26ff3389fb59109827b\"\u003e\u003ccode\u003e6e26a65\u003c/code\u003e\u003c/a\u003e Updated for docstrings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dslackw/colored/commit/726c7e3a9fab59fec1da0d98cd236ab30bf5d335\"\u003e\u003ccode\u003e726c7e3\u003c/code\u003e\u003c/a\u003e Fix: InvalidHexColor for test_hex_1.py module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dslackw/colored/commit/ea826ab8814a0560a66412e9138449eb62a3add6\"\u003e\u003ccode\u003eea826ab\u003c/code\u003e\u003c/a\u003e Fixed type annotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dslackw/colored/commit/3ed4a56ce61d371153dcee140b57df3ba5d5d005\"\u003e\u003ccode\u003e3ed4a56\u003c/code\u003e\u003c/a\u003e Fixed type annotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dslackw/colored/commit/c44d80740872acc5e40132df6f958df09e4aa328\"\u003e\u003ccode\u003ec44d807\u003c/code\u003e\u003c/a\u003e Updated class docstring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dslackw/colored/commit/c7665e76dae836d65589ef977ec50f983af3d179\"\u003e\u003ccode\u003ec7665e7\u003c/code\u003e\u003c/a\u003e Refined type validation and error handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dslackw/colored/commit/1950dafdb25c78a20d8513076d41b3625429ca64\"\u003e\u003ccode\u003e1950daf\u003c/code\u003e\u003c/a\u003e Fixed for mypy no-untyped-def\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dslackw/colored/commit/9ad5943f409aa75b5b52ef9779b4f23f80de2ecd\"\u003e\u003ccode\u003e9ad5943\u003c/code\u003e\u003c/a\u003e Updated docstrings\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://gitlab.com/dslackw/colored/compare/2.3.0...2.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `humanize` 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-humanize/humanize/releases\"\u003ehumanize's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd locale support for decimal separator in \u003ccode\u003eintword\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/287\"\u003e#287\u003c/a\u003e) \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.15 (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/275\"\u003e#275\u003c/a\u003e) \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplace pre-commit with prek (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/276\"\u003e#276\u003c/a\u003e) \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003enaturaldelta\u003c/code\u003e: round the value to nearest unit that makes sense (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/272\"\u003e#272\u003c/a\u003e) \u003ca href=\"https://github.com/dangillet\"\u003e\u003ccode\u003e@​dangillet\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix plural form for \u003ccode\u003eintword\u003c/code\u003e and improve performance (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/273\"\u003e#273\u003c/a\u003e) \u003ca href=\"https://github.com/dangillet\"\u003e\u003ccode\u003e@​dangillet\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eException\u003c/code\u003e with more specific \u003ccode\u003eFileNotFoundError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/286\"\u003e#286\u003c/a\u003e) \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.0\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Uzbek language (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/264\"\u003e#264\u003c/a\u003e) \u003ca href=\"https://github.com/sSimuSs\"\u003e\u003ccode\u003e@​sSimuSs\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/268\"\u003e#268\u003c/a\u003e) \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.13.0\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOptimise \u003ccode\u003enaturalsize\u003c/code\u003e algorithm by using \u003ccode\u003emath.log\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/253\"\u003e#253\u003c/a\u003e) \u003ca href=\"https://github.com/Zaczero\"\u003e\u003ccode\u003e@​Zaczero\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eprecisedelta\u003c/code\u003e rounding (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/254\"\u003e#254\u003c/a\u003e) \u003ca href=\"https://github.com/dangillet\"\u003e\u003ccode\u003e@​dangillet\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.12.3\u003c/h2\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003enaturalsize\u003c/code\u003e for \u003ccode\u003efloat\u003c/code\u003e and \u003ccode\u003estr\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/250\"\u003e#250\u003c/a\u003e) \u003ca href=\"https://github.com/loicleyendecker\"\u003e\u003ccode\u003e@​loicleyendecker\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprovements for French translation (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/248\"\u003e#248\u003c/a\u003e) \u003ca href=\"https://github.com/merwok\"\u003e\u003ccode\u003e@​merwok\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/python-humanize/humanize/commit/2ddb5903cdc1c7e6eb6b083f4f99f73db50aecd9\"\u003e\u003ccode\u003e2ddb590\u003c/code\u003e\u003c/a\u003e Replace \u003ccode\u003eException\u003c/code\u003e with more specific \u003ccode\u003eFileNotFoundError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/286\"\u003e#286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-humanize/humanize/commit/e87f2e25660d3af2ea553ea8dc63bff99652bc94\"\u003e\u003ccode\u003ee87f2e2\u003c/code\u003e\u003c/a\u003e Add locale support for decimal separator in \u003ccode\u003eintword\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/287\"\u003e#287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-humanize/humanize/commit/717518400d6709cf7e9bebe4a9424eb3b1ebd60d\"\u003e\u003ccode\u003e7175184\u003c/code\u003e\u003c/a\u003e Add locale support for decimal separator in intword\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-humanize/humanize/commit/25269993e7ef021edaba620c96827ca21cc13d7e\"\u003e\u003ccode\u003e2526999\u003c/code\u003e\u003c/a\u003e Update config (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/285\"\u003e#285\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-humanize/humanize/commit/ba532d9ae45d1da89f3687259324365dc187ebca\"\u003e\u003ccode\u003eba532d9\u003c/code\u003e\u003c/a\u003e Replace Exception with more specific FileNotFoundError\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-humanize/humanize/commit/bdc49ea831cb3a79ba0155a57f27259cabb8cafd\"\u003e\u003ccode\u003ebdc49ea\u003c/code\u003e\u003c/a\u003e Don't ignore UP038, it's been removed from Ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-humanize/humanize/commit/86f116bda6698c3e03e0db5f7fcfd929a4ba9ad4\"\u003e\u003ccode\u003e86f116b\u003c/code\u003e\u003c/a\u003e Add seven-day cooldown to Renovate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-humanize/humanize/commit/e3f7116924dad455a87e85a5d7b8b7a07460fd57\"\u003e\u003ccode\u003ee3f7116\u003c/code\u003e\u003c/a\u003e No need for setup-python with prek-action\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-humanize/humanize/commit/3dca143f7884b928632f68449423d914531ca267\"\u003e\u003ccode\u003e3dca143\u003c/code\u003e\u003c/a\u003e \u003ccode\u003enaturaldelta\u003c/code\u003e: round the value to nearest unit that makes sense (\u003ca href=\"https://redirect.github.com/python-humanize/humanize/issues/272\"\u003e#272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-humanize/humanize/commit/bac6f269d7f51adcd62840db969c0a40fec8fd70\"\u003e\u003ccode\u003ebac6f26\u003c/code\u003e\u003c/a\u003e Apply suggestion from \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-humanize/humanize/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 `ipympl` from 0.9.7 to 0.10.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/ipympl/releases\"\u003eipympl's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev.0.10.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate snapshots bot checkout and permission check by \u003ca href=\"https://github.com/martinRenou\"\u003e\u003ccode\u003e@​martinRenou\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/614\"\u003ematplotlib/ipympl#614\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Pixi setup by \u003ca href=\"https://github.com/ianhi\"\u003e\u003ccode\u003e@​ianhi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/613\"\u003ematplotlib/ipympl#613\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFIX: Toolbar savefig respects rcparams by \u003ca href=\"https://github.com/ianhi\"\u003e\u003ccode\u003e@​ianhi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/615\"\u003ematplotlib/ipympl#615\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/matplotlib/ipympl/compare/v0.9.8...v0.10.0\"\u003ehttps://github.com/matplotlib/ipympl/compare/v0.9.8...v0.10.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eRelease 0.9.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake 'Usage' section in README consistent with current Basic Example at current documentation by \u003ca href=\"https://github.com/fomightez\"\u003e\u003ccode\u003e@​fomightez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/583\"\u003ematplotlib/ipympl#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: update release workflow by \u003ca href=\"https://github.com/ianhi\"\u003e\u003ccode\u003e@​ianhi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/590\"\u003ematplotlib/ipympl#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse thread lock to support comms via subshells by \u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/603\"\u003ematplotlib/ipympl#603\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse intersphinx_registry to keep intersphinx_mapping up to date. by \u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/604\"\u003ematplotlib/ipympl#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest on python 3.14 by \u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/606\"\u003ematplotlib/ipympl#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix doc build issues by \u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/605\"\u003ematplotlib/ipympl#605\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelease 0.9.8 by \u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/607\"\u003ematplotlib/ipympl#607\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/fomightez\"\u003e\u003ccode\u003e@​fomightez\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/583\"\u003ematplotlib/ipympl#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/matplotlib/ipympl/pull/604\"\u003ematplotlib/ipympl#604\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/matplotlib/ipympl/compare/0.9.7...v0.9.8\"\u003ehttps://github.com/matplotlib/ipympl/compare/0.9.7...v0.9.8\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/matplotlib/ipympl/commit/1ba859698404d9efba44ef3cb0b00dee0daa6c11\"\u003e\u003ccode\u003e1ba8596\u003c/code\u003e\u003c/a\u003e Bump version to 0.10.0 / 0.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/ipympl/commit/805057a60768867ab4c309e9380a99b286dcfef9\"\u003e\u003ccode\u003e805057a\u003c/code\u003e\u003c/a\u003e FIX: Toolbar savefig respects rcparams (\u003ca href=\"https://redirect.github.com/matplotlib/ipympl/issues/615\"\u003e#615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/ipympl/commit/5a81b503d3d7d1a08a71c1017e8ba066a516ada8\"\u003e\u003ccode\u003e5a81b50\u003c/code\u003e\u003c/a\u003e Add Pixi setup (\u003ca href=\"https://redirect.github.com/matplotlib/ipympl/issues/613\"\u003e#613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/ipympl/commit/57e60534aa7bf547f5d421052dedc3f455547504\"\u003e\u003ccode\u003e57e6053\u003c/code\u003e\u003c/a\u003e Update bot checkout (\u003ca href=\"https://redirect.github.com/matplotlib/ipympl/issues/614\"\u003e#614\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/ipympl/commit/0f19f0a2b6b3df37787368bdb3669663d833d7ac\"\u003e\u003ccode\u003e0f19f0a\u003c/code\u003e\u003c/a\u003e Release 0.9.8 (\u003ca href=\"https://redirect.github.com/matplotlib/ipympl/issues/607\"\u003e#607\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/ipympl/commit/00aa8af30a74ee32215253a965264da1e9a8eb14\"\u003e\u003ccode\u003e00aa8af\u003c/code\u003e\u003c/a\u003e Fix doc build issues (\u003ca href=\"https://redirect.github.com/matplotlib/ipympl/issues/605\"\u003e#605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/ipympl/commit/fe010195f05249fa8407ffbc8ec7f940c9219358\"\u003e\u003ccode\u003efe01019\u003c/code\u003e\u003c/a\u003e Test on python 3.14 (\u003ca href=\"https://redirect.github.com/matplotlib/ipympl/issues/606\"\u003e#606\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/ipympl/commit/6ee18b822e4558c4bcbdb7d255e17c3220c5a391\"\u003e\u003ccode\u003e6ee18b8\u003c/code\u003e\u003c/a\u003e Use intersphinx_registry to keep intersphinx_mapping up to date. (\u003ca href=\"https://redirect.github.com/matplotlib/ipympl/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/ipympl/commit/1ef9f671cba3e2424fbe55126151e43d07dc5b04\"\u003e\u003ccode\u003e1ef9f67\u003c/code\u003e\u003c/a\u003e Use thread lock to support comms via subshells (\u003ca href=\"https://redirect.github.com/matplotlib/ipympl/issues/603\"\u003e#603\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/ipympl/commit/5e068ed222427919cc20c406e34d02ba9be55cc3\"\u003e\u003ccode\u003e5e068ed\u003c/code\u003e\u003c/a\u003e build: update release workflow (\u003ca href=\"https://redirect.github.com/matplotlib/ipympl/issues/590\"\u003e#590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/ipympl/compare/0.9.7...v0.10.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ipywidgets` from 8.1.6 to 8.1.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jupyter-widgets/ipywidgets/releases\"\u003eipywidgets's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.1.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd JupyterCon banner and jupyter colors by \u003ca href=\"https://github.com/choldgraf\"\u003e\u003ccode\u003e@​choldgraf\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jupyter-widgets/ipywidgets/pull/3998\"\u003ejupyter-widgets/ipywidgets#3998\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix badge formatting in README.md by \u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jupyter-widgets/ipywidgets/pull/4000\"\u003ejupyter-widgets/ipywidgets#4000\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Plausible web stats by \u003ca href=\"https://github.com/jasongrout\"\u003e\u003ccode\u003e@​jasongrout\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jupyter-widgets/ipywidgets/pull/4003\"\u003ejupyter-widgets/ipywidgets#4003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate jupyterlab_widgets metadata to indicate it works with JupyterLab 4 by \u003ca href=\"https://github.com/jasongrout\"\u003e\u003ccode\u003e@​jasongrout\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jupyter-widgets/ipywidgets/pull/4004\"\u003ejupyter-widgets/ipywidgets#4004\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/choldgraf\"\u003e\u003ccode\u003e@​choldgraf\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jupyter-widgets/ipywidgets/pull/3998\"\u003ejupyter-widgets/ipywidgets#3998\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jupyter-widgets/ipywidgets/compare/8.1.7...8.1.8\"\u003ehttps://github.com/jupyter-widgets/ipywidgets/compare/8.1.7...8.1.8\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e8.1.7\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix CI + remove Python 3.8 by \u003ca href=\"https://github.com/martinRenou\"\u003e\u003ccode\u003e@​martinRenou\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jupyter-widgets/ipywidgets/pull/3989\"\u003ejupyter-widgets/ipywidgets#3989\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDynamic widgets registry by \u003ca href=\"https://github.com/martinRenou\"\u003e\u003ccode\u003e@​martinRenou\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jupyter-widgets/ipywidgets/pull/3988\"\u003ejupyter-widgets/ipywidgets#3988\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jupyter-widgets/ipywidgets/compare/8.1.6...8.1.7\"\u003ehttps://github.com/jupyter-widgets/ipywidgets/compare/8.1.6...8.1.7\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\u003eSee full diff in \u003ca href=\"https://github.com/jupyter-widgets/ipywidgets/compare/8.1.6...8.1.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jupyterlab` from 4.4.1 to 4.5.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jupyterlab/jupyterlab/releases\"\u003ejupyterlab's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.5.3\u003c/h2\u003e\n\u003ch2\u003e4.5.3\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/jupyterlab/jupyterlab/compare/v4.5.2...a3c7cc66c59cc260de9abe56d0d9aaba824d2036\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix error in console when the debugger switch from a module to another \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18352\"\u003e#18352\u003c/a\u003e (\u003ca href=\"https://github.com/brichet\"\u003e\u003ccode\u003e@​brichet\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix focus of replace buttons in the document search box \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18362\"\u003e#18362\u003c/a\u003e (\u003ca href=\"https://github.com/IsabelParedes\"\u003e\u003ccode\u003e@​IsabelParedes\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate CodeMirror to latest versions \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18344\"\u003e#18344\u003c/a\u003e (\u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix deferred cell loading in \u003ccode\u003edefer\u003c/code\u003e and \u003ccode\u003econtentVisibility\u003c/code\u003e windowing mode \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18359\"\u003e#18359\u003c/a\u003e (\u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBackport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18349\"\u003e#18349\u003c/a\u003e: Fix \u0026quot;Open With \u0026gt; Editor\u0026quot; for \u003ccode\u003e.py\u003c/code\u003e files, update \u003ccode\u003e@lumino\u003c/code\u003e packages to \u003ccode\u003ev2026.1.15\u003c/code\u003e \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18351\"\u003e#18351\u003c/a\u003e (\u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/aaron-seq\"\u003e\u003ccode\u003e@​aaron-seq\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix UI tests: config useSystemClipboardForCells=true for notebook toolbar test \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18335\"\u003e#18335\u003c/a\u003e (\u003ca href=\"https://github.com/brichet\"\u003e\u003ccode\u003e@​brichet\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove generated docs files from the repo \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18340\"\u003e#18340\u003c/a\u003e (\u003ca href=\"https://github.com/jtpio\"\u003e\u003ccode\u003e@​jtpio\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd installation instructions for JupyterLab with uv \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18363\"\u003e#18363\u003c/a\u003e (\u003ca href=\"https://github.com/jimangel\"\u003e\u003ccode\u003e@​jimangel\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003eThe following people contributed discussions, new ideas, code and documentation contributions, and review.\nSee \u003ca href=\"https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports\"\u003eour definition of contributors\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/jupyterlab/jupyterlab/graphs/contributors?from=2026-01-12\u0026amp;to=2026-01-23\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aaron-seq\"\u003e\u003ccode\u003e@​aaron-seq\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aaaron-seq+updated%3A2026-01-12..2026-01-23\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/brichet\"\u003e\u003ccode\u003e@​brichet\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Abrichet+updated%3A2026-01-12..2026-01-23\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/IsabelParedes\"\u003e\u003ccode\u003e@​IsabelParedes\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AIsabelParedes+updated%3A2026-01-12..2026-01-23\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/jimangel\"\u003e\u003ccode\u003e@​jimangel\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajimangel+updated%3A2026-01-12..2026-01-23\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/jtpio\"\u003e\u003ccode\u003e@​jtpio\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajtpio+updated%3A2026-01-12..2026-01-23\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Akrassowski+updated%3A2026-01-12..2026-01-23\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003ev4.5.2\u003c/h2\u003e\n\u003ch2\u003e4.5.2\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/jupyterlab/jupyterlab/compare/v4.5.1...bb13be16887be7116f086da699bd09208042e2b6\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBackport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18250\"\u003e#18250\u003c/a\u003e: Make system clipboard opt-in \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18319\"\u003e#18319\u003c/a\u003e (\u003ca href=\"https://github.com/Darshan808\"\u003e\u003ccode\u003e@​Darshan808\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix empty math block throws codemirror's error \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18308\"\u003e#18308\u003c/a\u003e (\u003ca href=\"https://github.com/i-aki-y\"\u003e\u003ccode\u003e@​i-aki-y\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix cell footer width for smaller screens \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18276\"\u003e#18276\u003c/a\u003e (\u003ca href=\"https://github.com/MUFFANUJ\"\u003e\u003ccode\u003e@​MUFFANUJ\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix scrolling to anchor from ToC/links in Markdown and HTML with data attributes \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18208\"\u003e#18208\u003c/a\u003e (\u003ca href=\"https://github.com/pranshugupta01\"\u003e\u003ccode\u003e@​pranshugupta01\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix merge breaking rendering cell order in \u003ccode\u003edefer\u003c/code\u003e mode \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18220\"\u003e#18220\u003c/a\u003e (\u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix inverted Unicode surrogate checks \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18209\"\u003e#18209\u003c/a\u003e (\u003ca href=\"https://github.com/JamesWrigley\"\u003e\u003ccode\u003e@​JamesWrigley\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\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/jupyterlab/jupyterlab/commit/26776604839d9174cc6239089372d5cfbe0a9957\"\u003e\u003ccode\u003e2677660\u003c/code\u003e\u003c/a\u003e [ci skip] Publish 4.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/a3c7cc66c59cc260de9abe56d0d9aaba824d2036\"\u003e\u003ccode\u003ea3c7cc6\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18344\"\u003e#18344\u003c/a\u003e on branch 4.5.x (Update CodeMirror to latest versions) (\u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/6859dddcbf060c7cd88831c1ca9da7adebcdc3ec\"\u003e\u003ccode\u003e6859ddd\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18352\"\u003e#18352\u003c/a\u003e: Fix error in console when the debugger switch from a modu...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/1dff9c60cdfad7946960ec3fab95a004058207b4\"\u003e\u003ccode\u003e1dff9c6\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18362\"\u003e#18362\u003c/a\u003e: Fix focus of replace buttons in the document search box (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/7e496829cb6e126ed5f442add70ef97a6149a81b\"\u003e\u003ccode\u003e7e49682\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18363\"\u003e#18363\u003c/a\u003e: Add installation instructions for JupyterLab with uv (\u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18\"\u003e#18\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/06736b57ffb7fcacd997ac22f37e6b582510a4be\"\u003e\u003ccode\u003e06736b5\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18359\"\u003e#18359\u003c/a\u003e: Fix deferred cell loading in \u003ccode\u003edefer\u003c/code\u003e and `contentVisibili...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/36885449617f3f958269325c3f54bbeeb6682b01\"\u003e\u003ccode\u003e3688544\u003c/code\u003e\u003c/a\u003e Fix \u0026quot;Open With \u0026gt; Editor\u0026quot; for \u003ccode\u003e.py\u003c/code\u003e files, update \u003ccode\u003e@lumino\u003c/code\u003e packages to `v2026...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/ec399e0bf66b783a222279cf0adb645040a3f8a6\"\u003e\u003ccode\u003eec399e0\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18335\"\u003e#18335\u003c/a\u003e: Fix UI tests: config useSystemClipboardForCells=true for ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/bb5cb96c28706449dece0a9aadf5b6ab47adc3c4\"\u003e\u003ccode\u003ebb5cb96\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18340\"\u003e#18340\u003c/a\u003e: Remove generated docs files from the repo (\u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18341\"\u003e#18341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/cdf27466ff03fac430b2a9f3b4b61d238487ac5d\"\u003e\u003ccode\u003ecdf2746\u003c/code\u003e\u003c/a\u003e [ci skip] Publish 4.5.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jupyterlab/jupyterlab/compare/@jupyterlab/lsp@4.4.1...@jupyterlab/lsp@4.5.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.10.1 to 3.10.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: v3.10.8\u003c/h2\u003e\n\u003cp\u003eThis is a bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eThe primary highlights of this release are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eProperly allow freethreaded mode in the MacOS backend\u003c/li\u003e\n\u003cli\u003eBetter error handling for MacOS backend\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eREL: v3.10.7\u003c/h2\u003e\n\u003cp\u003eThis is the latest bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eThe most important update in this release is that the minimum version\nof \u003ccode\u003epyparsing\u003c/code\u003e has been updated to version 3.0.\u003c/p\u003e\n\u003ch2\u003eREL: v3.10.6\u003c/h2\u003e\n\u003cp\u003eThis is a bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eHighlights from this release include:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e- Fix regression of hi-dpi support for Qt\n- Fix race condition in TexManager.make_dvi \u0026amp; make_png\n- Various documentation and other bugfixes\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eREL: v3.10.5\u003c/h2\u003e\n\u003cp\u003eThis is the fourth bugfix release of the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eIncluded in this release is distributed wheels for Python 3.14 (including freethreaded) and Windows ARM.\u003c/p\u003e\n\u003cp\u003eThere are also several smaller bugfixes.\u003c/p\u003e\n\u003ch2\u003eREL: v3.10.3\u003c/h2\u003e\n\u003cp\u003eThis is the third bugfix release of the 3.10.x series\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/matplotlib/matplotlib/commit/1392cbe3c79cdb93f9282747841d648770f60249\"\u003e\u003ccode\u003e1392cbe\u003c/code\u003e\u003c/a\u003e REL: v3.10.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/0b9ebb35f8310f22eb7f932b2ae14befb1f40b6f\"\u003e\u003ccode\u003e0b9ebb3\u003c/code\u003e\u003c/a\u003e Doc release prep v3.10.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/bc7b5c4377ce2544e8936255c51c1ff7cd0c5a85\"\u003e\u003ccode\u003ebc7b5c4\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.10.7-doc' into v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/86b38d3f29aa2af2ddcbd1895433117caa0fba47\"\u003e\u003ccode\u003e86b38d3\u003c/code\u003e\u003c/a\u003e Github stats v3.10.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/9512188e42f9d221f83869113c44f99fe1832a0f\"\u003e\u003ccode\u003e9512188\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30717\"\u003e#30717\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-30714-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/d300769285e2c920804134e40ec83837eabe16d8\"\u003e\u003ccode\u003ed300769\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30714\"\u003e#30714\u003c/a\u003e: FIX: Gracefully handle numpy arrays as input to check_in_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/799bc9561daea5b5578f888817cb45c9321a0463\"\u003e\u003ccode\u003e799bc95\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30711\"\u003e#30711\u003c/a\u003e from ngoldbaum/v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/134000ba19a4354da2ad1084627039e05c936754\"\u003e\u003ccode\u003e134000b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30697\"\u003e#30697\u003c/a\u003e from ngoldbaum/fix-plotting-on-worker-threads\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/5b8e219d70f1daa443330eb6a5a6211506b37362\"\u003e\u003ccode\u003e5b8e219\u003c/code\u003e\u003c/a\u003e TST: Run macosx backends in a subprocess\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/878e71a95006d3aec9505f3bd836968951fdd163\"\u003e\u003ccode\u003e878e71a\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/29810\"\u003e#29810\u003c/a\u003e: Declare free-threaded support in MacOS backend extension ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.10.1...v3.10.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib-stubs` from 0.2.0 to 0.3.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/releases\"\u003ematplotlib-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.3.11\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev0.3.10\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev0.3.9\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix broken import in \u003ccode\u003ematplotlib.pyplot.plot_date\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.3.8\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ematplotlib.pyplot.xlim\u003c/code\u003e and \u003ccode\u003ematplotlib.pyplot.ylim\u003c/code\u003e overloads, including datetime support\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.3.7\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev0.3.6\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ematplotlib.axes.Axes.set_xticks\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ematplotlib.axes.Axes.bar\u003c/code\u003e to support datetime sequences\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.3.5\u003c/h2\u003e\n\u003cp\u003eFix \u003ccode\u003ematplotlib.pyplot.plot\u003c/code\u003e to allow using datetime sequences.\u003c/p\u003e\n\u003ch2\u003ev0.3.4\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eComplete type hints for:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.subplots_adjust\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.subplots\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.subplot_mosaic\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.3.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eComplete \u003ccode\u003ematplotlib.pyplot.text\u003c/code\u003e's type hints\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ematplotlib.cm.colors\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.3.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ematplotlib.cm\u003c/code\u003e's colormaps\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.3.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd return type to \u003ccode\u003eplt.ylabel\u003c/code\u003e and \u003ccode\u003eplt.xlabel\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix/refine argument types for \u003ccode\u003eplt.savefig\u003c/code\u003e, \u003ccode\u003eplt.plot\u003c/code\u003e and \u003ccode\u003eplt.scatter\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.3.0\u003c/h2\u003e\n\u003cp\u003eImprove type hints for the following functions:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.close()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.figure()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.legend()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.plot()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.savefig()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.scatter()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.title()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.xlabel()\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/hoel-bagard/matplotlib-stubs/blob/master/CHANGELOG.md\"\u003ematplotlib-stubs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.11 - 2025-10-23\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd type hints for \u003ccode\u003ematplotlib.pyplot\u003c/code\u003e's \u003ccode\u003eshow\u003c/code\u003e, \u003ccode\u003etight_layout\u003c/code\u003e, \u003ccode\u003ebar\u003c/code\u003e, \u003ccode\u003exticks\u003c/code\u003e and \u003ccode\u003eyticks\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.10 - 2025-10-22\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ematplotlib.pyplot.loglog\u003c/code\u003e type hints\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.9 - 2025-10-22\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix broken import in \u003ccode\u003ematplotlib.pyplot.plot_date\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.8 - 2025-10-22\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ematplotlib.pyplot.xlim\u003c/code\u003e and \u003ccode\u003ematplotlib.pyplot.ylim\u003c/code\u003e overloads, including datetime support\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.7 - 2025-10-21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ematplotlib.pyplot.axhline\u003c/code\u003e's kwargs type\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.6 - 2025-10-19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ematplotlib.axes.Axes.set_xticks\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ematplotlib.axes.Axes.bar\u003c/code\u003e to support datetime sequences\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.5 - 2025-10-14\u003c/h2\u003e\n\u003cp\u003eFix \u003ccode\u003ematplotlib.pyplot.plot\u003c/code\u003e to allow using datetime sequences.\u003c/p\u003e\n\u003ch2\u003e0.3.4 - 2025-09-11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eComplete type hints for:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.subplots_adjust\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.subplots\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ematplotlib.pyplot.subplot_mosaic\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.3 - 2025-09-04\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eComplete \u003ccode\u003ematplotlib.pyplot.text\u003c/code\u003e's type hints\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ematplotlib.cm.colors\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.2] - 2025-08-07\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ematplotlib.cm\u003c/code\u003e's colormaps\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.1] - 2025-08-04\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd return type to \u003ccode\u003eplt.ylabel\u003c/code\u003e and \u003ccode\u003eplt.xlabel\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix/refine argument types for \u003ccode\u003eplt.savefig\u003c/code\u003e, \u003ccode\u003eplt.plot\u003c/code\u003e and \u003ccode\u003eplt.scatter\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/commit/59fdaf216331aa54996e5f1149e6ee096ca63557\"\u003e\u003ccode\u003e59fdaf2\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/commit/b85c0f74cd4587d8f9ccdb0a65639981ca29bfaa\"\u003e\u003ccode\u003eb85c0f7\u003c/code\u003e\u003c/a\u003e feat: add type hints for show, tight_layout, bar, xticks and yticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/commit/8afc8f4122949daaa447febe9b715feaaa13da59\"\u003e\u003ccode\u003e8afc8f4\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.3.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/commit/f9de850ed9f5662672ec663e2b88619b42d34e5a\"\u003e\u003ccode\u003ef9de850\u003c/code\u003e\u003c/a\u003e feat: add type hints to plt.loglog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/commit/4ffefa652da3881b576823b003e695d8c4ad0dbe\"\u003e\u003ccode\u003e4ffefa6\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/commit/e6a54149513cf96fab1c8e35ae1589a5106a46c2\"\u003e\u003ccode\u003ee6a5414\u003c/code\u003e\u003c/a\u003e fix: broken import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/commit/90b7235400fd1467a85ccf3ff06a5c068cd4e410\"\u003e\u003ccode\u003e90b7235\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/commit/af0f45827cda237040c46dd126530a0971e41758\"\u003e\u003ccode\u003eaf0f458\u003c/code\u003e\u003c/a\u003e feat: add xlim and ylim overloads\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/commit/5d5ab771404092929deacaef66cc8efe625a4752\"\u003e\u003ccode\u003e5d5ab77\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.3.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/commit/5f5a9e46f14de1072f07eb865af4d552a553672c\"\u003e\u003ccode\u003e5f5a9e4\u003c/code\u003e\u003c/a\u003e fix: add axhline kwargs type\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/hoel-bagard/matplotlib-stubs/compare/0.2.0...v0.3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `networkx` from 3.4.2 to 3.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/networkx/networkx/releases\"\u003enetworkx's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eNetworkX 3.6.1\u003c/h2\u003e\n\u003ch1\u003enetworkx 3.6.1\u003c/h1\u003e\n\u003cp\u003eWe're happy to announce the release of networkx 3.6.1!\u003c/p\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd spectral bipartition community finding and greedy bipartition using node swaps (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8347\"\u003e#8347\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eNodelists for \u003ccode\u003efrom_biadjacency_matrix\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/7993\"\u003e#7993\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd spectral bipartition community finding and greedy bipartition using node swaps (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8347\"\u003e#8347\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix draw_networkx_nodes with list node_shape and add regression test (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8363\"\u003e#8363\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: allow graph subclasses to have additional arguments (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8369\"\u003e#8369\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDOC: Improve benchmarking readme (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8358\"\u003e#8358\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDOC: More details re: RC releases in the release process devdocs (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8346\"\u003e#8346\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDOC: clarify difference between G.nodes/G.nodes() and G.edges/G.edges() in tutorial (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8300\"\u003e#8300\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDOC: Add blurb to contributor guide about drawing tests (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8370\"\u003e#8370\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDOC: Fix underline lens in docstrings (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8371\"\u003e#8371\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRolling back shortest paths links (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8373\"\u003e#8373\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMAINT: Replace string literal with comment (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8359\"\u003e#8359\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the actions group (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8360\"\u003e#8360\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003epin python 3.14 to be version 3.14.0 until dataclasses are fixed (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8365\"\u003e#8365\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eBlocklist Python 3.14.1 (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8372\"\u003e#8372\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTST: add tests for unsupported graph types in MST algorithms (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8353\"\u003e#8353\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eTST: clean up isomorphism tests (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8364\"\u003e#8364\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003e10 authors added to this release (alphabetically):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Aka2210\"\u003e\u003ccode\u003e@​Aka2210\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jfinkels\"\u003e\u003ccode\u003e@​jfinkels\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NaorTIRAM\"\u003e\u003ccode\u003e@​NaorTIRAM\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAditi Juneja (\u003ca href=\"https://github.com/Schefflera-Arboricola\"\u003e\u003ccode\u003e@​Schefflera-Arboricola\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAlejandro Candioti (\u003ca href=\"https://github.com/amcandio\"\u003e\u003ccode\u003e@​amcandio\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColman Bouton (\u003ca href=\"https://github.com/LorentzFactor\"\u003e\u003ccode\u003e@​LorentzFactor\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/networkx/networkx/commit/7530809bfa1ea7ed6fdf918a4d1431488953cb1f\"\u003e\u003ccode\u003e7530809\u003c/code\u003e\u003c/a\u003e Designate 3.6.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/4788eb08f2492dd6bf6f97ce8ee07cd52aa6cf89\"\u003e\u003ccode\u003e4788eb0\u003c/code\u003e\u003c/a\u003e Rolling back shortest paths links (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8373\"\u003e#8373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/696edb6efbbbb622959e96f1276fc0db68dc0954\"\u003e\u003ccode\u003e696edb6\u003c/code\u003e\u003c/a\u003e Fix draw_networkx_nodes with list node_shape and add regression test  (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8363\"\u003e#8363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/c38830c61a6fee3ee10f216071bb63cb9b92bfb9\"\u003e\u003ccode\u003ec38830c\u003c/code\u003e\u003c/a\u003e Blocklist Python 3.14.1 (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8372\"\u003e#8372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/81d231141b08600ebfd1c781e28ecbf791e94016\"\u003e\u003ccode\u003e81d2311\u003c/code\u003e\u003c/a\u003e DOC: Fix underline lens in docstrings. (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8371\"\u003e#8371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/a6e2bfadef51dda47df6466b32642e0d428c5801\"\u003e\u003ccode\u003ea6e2bfa\u003c/code\u003e\u003c/a\u003e DOC: Add blurb to contributor guide about drawing tests. (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8370\"\u003e#8370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/96b628295eff29d266e1c75355556fc9fe58cc16\"\u003e\u003ccode\u003e96b6282\u003c/code\u003e\u003c/a\u003e DOC: clarify difference between G.nodes/G.nodes() and G.edges/G.edges() in tu...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/75bdd737ca8382d06eb76ff9018a81870c9f3443\"\u003e\u003ccode\u003e75bdd73\u003c/code\u003e\u003c/a\u003e Fix: allow graph subclasses to have additional arguments (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8369\"\u003e#8369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/7663fa5e5fd73d6921410a18c7ac4116ffa04f4d\"\u003e\u003ccode\u003e7663fa5\u003c/code\u003e\u003c/a\u003e TST: clean up isomorphism tests (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8364\"\u003e#8364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/3dacd1bdcbd976b9e148a60ddebafd868c0a52f3\"\u003e\u003ccode\u003e3dacd1b\u003c/code\u003e\u003c/a\u003e Add spectral bipartition community finding and greedy bipartition using node ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/networkx/networkx/compare/networkx-3.4.2...networkx-3.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pandas-stubs` from 2.2.3.250308 to 2.3.3.260113\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas-stubs/commit/0cb16c482b2350047d51e5954e9d8bc5ff40f4d0\"\u003e\u003ccode\u003e0cb16c4\u003c/code\u003e\u003c/a\u003e Version 2.3.3.260113\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas-stubs/commit/bf9a74aa3092f59193f3ca26aae2d9e0c63a813f\"\u003e\u003ccode\u003ebf9a74a\u003c/code\u003e\u003c/a\u003e TYP: bump \u003ccode\u003ety\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas-stubs/issues/1630\"\u003e#1630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas-stubs/commit/db79b540b34c76ec5a710d366638d2b4949f5bc4\"\u003e\u003ccode\u003edb79b54\u003c/code\u003e\u003c/a\u003e TST: numeric arrays (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas-stubs/issues/1618\"\u003e#1618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas-stubs/commit/a0d8f9cedd7b1af11ad344b1717402425f403551\"\u003e\u003ccode\u003ea0d8f9c\u003c/code\u003e\u003c/a\u003e GH1614 Add more agg func methods for pivot_table (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas-stubs/issues/1623\"\u003e#1623\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas-stubs/commit/2c83c1fca90b14b2439d3312494642d7c52fd45e\"\u003e\u003ccode\u003e2c83c1f\u003c/code\u003e\u003c/a\u003e BUG: regression on \u003ca href=\"https://redirect.github.com/pandas-dev/pandas-stubs/issues/1594\"\u003e#1594\u003c/a\u003e for nightly (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas-stubs/issues/1620\"\u003e#1620\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas-stubs/commit/78fcc5b9da0aba3dda336624bf12f29b9b1214c4\"\u003e\u003ccode\u003e78fcc5b\u003c/code\u003e\u003c/a\u003e TYP: GH1614 Add more agg func methods for \u003ccode\u003epivot_table\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas-stubs/issues/1615\"\u003e#1615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas-stubs/commit/cf423fdf17933fbf546cb129e9fc4df08c780724\"\u003e\u003ccode\u003ecf423fd\u003c/code\u003e\u003c/a\u003e CLN: move tests for \u003ccode\u003eSeries.astype\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas-stubs/issues/1611\"\u003e#1611\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas-stubs/commit/0954c0db562e7e868b1839b4adcb2b049e9136e0\"\u003e\u003ccode\u003e0954c0d\u003c/code\u003e\u003c/a\u003e BUG: rename to \u003ccode\u003eNoDefaultDoNotUse\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas-stubs/issues/1616\"\u003e#1616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas-stubs/commit/b54625adb16fad269b0ea420436a95f24002e5c7\"\u003e\u003ccode\u003eb54625a\u003c/code\u003e\u003c/a\u003e TST: \u003ccode\u003exStringArray\u003c/code\u003e and \u003ccode\u003eNumpyExtensionArray\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas-stubs/issues/1594\"\u003e#1594\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas-stubs/commit/df2ebd03248496f309cfdb87719de3f659530eb7\"\u003e\u003ccode\u003edf2ebd0\u003c/code\u003e\u003c/a\u003e DEPR: \u003ccode\u003eravel\u003c/code\u003e in \u003ccode\u003eIndex\u003c/code\u003e and \u003ccode\u003eSeries\u003c/code\u003e \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/36900\"\u003epandas-dev/pandas#36900\u003c/a\u003e pandas-dev/pand...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pandas-dev/pandas-stubs/compare/v2.2.3.250308...v2.3.3.260113\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prettytable` from 3.16.0 to 3.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/prettytable/prettytable/releases\"\u003eprettytable's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.17.0\u003c/h2...\n\n_Description has been truncated_","html_url":"https://github.com/sjwiesman/materialize/pull/469","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjwiesman%2Fmaterialize/issues/469","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/469/packages"}},{"old_version":"1.8.0","new_version":"1.9.0","update_type":"minor","path":null,"pr_created_at":"2026-01-25T03:39:09.000Z","version_change":"1.8.0 → 1.9.0","issue":{"uuid":"3852491243","node_id":"PR_kwDOQUpdgs6_MesG","number":1,"state":"open","title":"chore(deps): bump websocket-client from 1.8.0 to 1.9.0","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-25T03:39:09.000Z","updated_at":"2026-01-25T03:39:09.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":null,"ecosystem":"pip"},"body":"Bumps [websocket-client](https://github.com/websocket-client/websocket-client) from 1.8.0 to 1.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e1.9.0\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6861ee417b65c183a81671bc57cace26c9c7ee29\"\u003e\u003ccode\u003e6861ee4\u003c/code\u003e\u003c/a\u003e Use ipaddress module for no_proxy parsing (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/729bdb8fc063397d298261ed6f2288f272b7f6de\"\u003e\u003ccode\u003e729bdb8\u003c/code\u003e\u003c/a\u003e Coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/f22579afed961d89a306d0018f373922bf567d22\"\u003e\u003ccode\u003ef22579a\u003c/code\u003e\u003c/a\u003e Linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/9564030bed1112497bf1c879673870419365a064\"\u003e\u003ccode\u003e9564030\u003c/code\u003e\u003c/a\u003e Change echo URL in docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/c0fe0f7a18867599c9b62fc61f71036a8d5bdfcf\"\u003e\u003ccode\u003ec0fe0f7\u003c/code\u003e\u003c/a\u003e apply black formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/813d570fc95114aa48e8ddf8b767390a1a6985f7\"\u003e\u003ccode\u003e813d570\u003c/code\u003e\u003c/a\u003e Resolve all mypy errors, with AI assistance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6020f37e784b77f6627b38797595f038aa76f26e\"\u003e\u003ccode\u003e6020f37\u003c/code\u003e\u003c/a\u003e black formatting fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.8.0...v1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=websocket-client\u0026package-manager=pip\u0026previous-version=1.8.0\u0026new-version=1.9.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/MMeffert/control4-hvac-data-exporter/pull/1","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MMeffert%2Fcontrol4-hvac-data-exporter/issues/1","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1/packages"}},{"old_version":"1.6.4","new_version":"1.9.0","update_type":"minor","path":null,"pr_created_at":"2026-01-22T10:49:55.000Z","version_change":"1.6.4 → 1.9.0","issue":{"uuid":"3842355823","node_id":"PR_kwDOQf0FPs6-qr2A","number":23,"state":"open","title":"chore(deps): bump the python-minor-patch group across 1 directory with 65 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-22T10:49:55.000Z","updated_at":"2026-01-22T10:50:00.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor-patch","update_count":65,"packages":[{"name":"streamlit","old_version":"1.28.0","new_version":"1.50.0","repository_url":"https://github.com/streamlit/streamlit"},{"name":"python-dotenv","old_version":"1.0.0","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"mypy","old_version":"1.7.1","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"scikit-learn","old_version":"1.3.2","new_version":"1.6.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"statsmodels","old_version":"0.14.1","new_version":"0.14.6","repository_url":"https://github.com/statsmodels/statsmodels"},{"name":"matplotlib","old_version":"3.8.2","new_version":"3.9.4","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"seaborn","old_version":"0.13.0","new_version":"0.13.2","repository_url":"https://github.com/mwaskom/seaborn"},{"name":"celery","old_version":"5.3.4","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"scipy","old_version":"1.11.4","new_version":"1.13.1","repository_url":"https://github.com/scipy/scipy"},{"name":"anthropic","old_version":"0.8.1","new_version":"0.76.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"spacy","old_version":"3.7.2","new_version":"3.8.11","repository_url":"https://github.com/explosion/spaCy"},{"name":"transformers","old_version":"4.36.2","new_version":"4.57.6","repository_url":"https://github.com/huggingface/transformers"},{"name":"textblob","old_version":"0.17.1","new_version":"0.19.0","repository_url":"https://github.com/sloria/TextBlob"},{"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.39.0"},{"name":"pydantic","old_version":"2.5.2","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.1.0","new_version":"2.11.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"python-jose","old_version":"3.3.0","new_version":"3.5.0"},{"name":"python-multipart","old_version":"0.0.6","new_version":"0.0.20","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"openpyxl","old_version":"3.1.2","new_version":"3.1.5"},{"name":"psycopg2-binary","old_version":"2.9.9","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"playwright","old_version":"1.40.0","new_version":"1.57.0","repository_url":"https://github.com/microsoft/playwright-python"},{"name":"pytest-mock","old_version":"3.12.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"bandit","old_version":"1.7.5","new_version":"1.8.6","repository_url":"https://github.com/PyCQA/bandit"},{"name":"factory-boy","old_version":"3.3.0","new_version":"3.3.3","repository_url":"https://github.com/FactoryBoy/factory_boy"},{"name":"httpx","old_version":"0.25.2","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"selenium","old_version":"4.16.0","new_version":"4.36.0","repository_url":"https://github.com/SeleniumHQ/Selenium"},{"name":"jsonschema","old_version":"4.20.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"prometheus-client","old_version":"0.19.0","new_version":"0.24.1","repository_url":"https://github.com/prometheus/client_python"},{"name":"python-docx","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/python-openxml/python-docx"},{"name":"pytesseract","old_version":"0.3.10","new_version":"0.3.13","repository_url":"https://github.com/madmaze/pytesseract"},{"name":"alembic","old_version":"1.13.1","new_version":"1.16.5","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"cerberus","old_version":"1.3.5","new_version":"1.3.8","repository_url":"https://github.com/pyeve/cerberus"},{"name":"beautifulsoup4","old_version":"4.12.3","new_version":"4.14.3"},{"name":"celery","old_version":"5.3.4","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"kombu","old_version":"5.3.4","new_version":"5.6.2","repository_url":"https://github.com/celery/kombu"},{"name":"billiard","old_version":"4.2.0","new_version":"4.2.4","repository_url":"https://github.com/celery/billiard"},{"name":"sqlalchemy","old_version":"2.0.23","new_version":"2.0.46","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"asyncpg","old_version":"0.29.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"orjson","old_version":"3.9.10","new_version":"3.11.5","repository_url":"https://github.com/ijl/orjson"},{"name":"msgpack","old_version":"1.0.7","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"dynaconf","old_version":"3.2.4","new_version":"3.2.12","repository_url":"https://github.com/dynaconf/dynaconf"},{"name":"nltk","old_version":"3.8.1","new_version":"3.9.2","repository_url":"https://github.com/nltk/nltk"},{"name":"lru-dict","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/amitdev/lru-dict"},{"name":"pyjwt","old_version":"2.8.0","new_version":"2.10.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"jupyter","old_version":"1.0.0","new_version":"1.1.1"},{"name":"supervisor","old_version":"4.2.5","new_version":"4.3.0","repository_url":"https://github.com/Supervisor/supervisor"},{"name":"setproctitle","old_version":"1.3.3","new_version":"1.3.7","repository_url":"https://github.com/dvarrazzo/py-setproctitle"},{"name":"lz4","old_version":"4.3.2","new_version":"4.4.5","repository_url":"https://github.com/python-lz4/python-lz4"},{"name":"zstandard","old_version":"0.22.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"transitions","old_version":"0.9.0","new_version":"0.9.3","repository_url":"https://github.com/pytransitions/transitions"},{"name":"python-dateutil","old_version":"2.8.2","new_version":"2.9.0.post0","repository_url":"https://github.com/dateutil/dateutil"},{"name":"uvloop","old_version":"0.19.0","new_version":"0.22.1","repository_url":"https://github.com/MagicStack/uvloop"},{"name":"ujson","old_version":"5.8.0","new_version":"5.11.0","repository_url":"https://github.com/ultrajson/ultrajson"},{"name":"py-spy","old_version":"0.3.14","new_version":"0.4.1","repository_url":"https://github.com/benfred/py-spy"},{"name":"onnxruntime","old_version":"1.16.3","new_version":"1.20.1","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"requests","old_version":"2.31.0","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"scrapy","old_version":"2.11.0","new_version":"2.13.4","repository_url":"https://github.com/scrapy/scrapy"},{"name":"tweepy","old_version":"4.14.0","new_version":"4.16.0","repository_url":"https://github.com/tweepy/tweepy"},{"name":"praw","old_version":"7.7.1","new_version":"7.8.1","repository_url":"https://github.com/praw-dev/praw"},{"name":"feedparser","old_version":"6.0.10","new_version":"6.0.12","repository_url":"https://github.com/kurtmckee/feedparser"},{"name":"tokenizers","old_version":"0.15.1","new_version":"0.22.2","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"websocket-client","old_version":"1.6.4","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"asyncio-mqtt","old_version":"0.13.0","new_version":"0.16.2","repository_url":"https://github.com/sbtinstruments/asyncio-mqtt"},{"name":"coverage","old_version":"7.4.0","new_version":"7.10.7","repository_url":"https://github.com/coveragepy/coveragepy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 65 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.28.0` | `1.50.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.0` | `1.2.1` |\n| [mypy](https://github.com/python/mypy) | `1.7.1` | `1.19.1` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.3.2` | `1.6.1` |\n| [statsmodels](https://github.com/statsmodels/statsmodels) | `0.14.1` | `0.14.6` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.8.2` | `3.9.4` |\n| [seaborn](https://github.com/mwaskom/seaborn) | `0.13.0` | `0.13.2` |\n| [celery](https://github.com/celery/celery) | `5.3.4` | `5.6.2` |\n| [scipy](https://github.com/scipy/scipy) | `1.11.4` | `1.13.1` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `0.8.1` | `0.76.0` |\n| [spacy](https://github.com/explosion/spaCy) | `3.7.2` | `3.8.11` |\n| [transformers](https://github.com/huggingface/transformers) | `4.36.2` | `4.57.6` |\n| [textblob](https://github.com/sloria/TextBlob) | `0.17.1` | `0.19.0` |\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.39.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.5.2` | `2.12.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.1.0` | `2.11.0` |\n| [python-jose[cryptography]](https://github.com/mpdavis/python-jose) | `3.3.0` | `3.5.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.6` | `0.0.20` |\n| [openpyxl](https://openpyxl.readthedocs.io) | `3.1.2` | `3.1.5` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.9` | `2.9.11` |\n| [playwright](https://github.com/microsoft/playwright-python) | `1.40.0` | `1.57.0` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.12.0` | `3.15.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.7.5` | `1.8.6` |\n| [factory-boy](https://github.com/FactoryBoy/factory_boy) | `3.3.0` | `3.3.3` |\n| [httpx](https://github.com/encode/httpx) | `0.25.2` | `0.28.1` |\n| [selenium](https://github.com/SeleniumHQ/Selenium) | `4.16.0` | `4.36.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.20.0` | `4.25.1` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.19.0` | `0.24.1` |\n| [python-docx](https://github.com/python-openxml/python-docx) | `1.1.0` | `1.2.0` |\n| [pytesseract](https://github.com/madmaze/pytesseract) | `0.3.10` | `0.3.13` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.13.1` | `1.16.5` |\n| [cerberus](https://github.com/pyeve/cerberus) | `1.3.5` | `1.3.8` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.12.3` | `4.14.3` |\n| [celery[redis]](https://github.com/celery/celery) | `5.3.4` | `5.6.2` |\n| [kombu](https://github.com/celery/kombu) | `5.3.4` | `5.6.2` |\n| [billiard](https://github.com/celery/billiard) | `4.2.0` | `4.2.4` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.23` | `2.0.46` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.29.0` | `0.31.0` |\n| [orjson](https://github.com/ijl/orjson) | `3.9.10` | `3.11.5` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.0.7` | `1.1.2` |\n| [dynaconf](https://github.com/dynaconf/dynaconf) | `3.2.4` | `3.2.12` |\n| [nltk](https://github.com/nltk/nltk) | `3.8.1` | `3.9.2` |\n| [lru-dict](https://github.com/amitdev/lru-dict) | `1.3.0` | `1.4.1` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.8.0` | `2.10.1` |\n| [jupyter](https://jupyter.org) | `1.0.0` | `1.1.1` |\n| [supervisor](https://github.com/Supervisor/supervisor) | `4.2.5` | `4.3.0` |\n| [setproctitle](https://github.com/dvarrazzo/py-setproctitle) | `1.3.3` | `1.3.7` |\n| [lz4](https://github.com/python-lz4/python-lz4) | `4.3.2` | `4.4.5` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.22.0` | `0.25.0` |\n| [transitions](https://github.com/pytransitions/transitions) | `0.9.0` | `0.9.3` |\n| [python-dateutil](https://github.com/dateutil/dateutil) | `2.8.2` | `2.9.0.post0` |\n| [uvloop](https://github.com/MagicStack/uvloop) | `0.19.0` | `0.22.1` |\n| [ujson](https://github.com/ultrajson/ultrajson) | `5.8.0` | `5.11.0` |\n| [py-spy](https://github.com/benfred/py-spy) | `0.3.14` | `0.4.1` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.16.3` | `1.20.1` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.32.5` |\n| [scrapy](https://github.com/scrapy/scrapy) | `2.11.0` | `2.13.4` |\n| [tweepy](https://github.com/tweepy/tweepy) | `4.14.0` | `4.16.0` |\n| [praw](https://github.com/praw-dev/praw) | `7.7.1` | `7.8.1` |\n| [feedparser](https://github.com/kurtmckee/feedparser) | `6.0.10` | `6.0.12` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.15.1` | `0.22.2` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.6.4` | `1.9.0` |\n| [asyncio-mqtt](https://github.com/sbtinstruments/asyncio-mqtt) | `0.13.0` | `0.16.2` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.4.0` | `7.10.7` |\n\n\nUpdates `streamlit` from 1.28.0 to 1.50.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/streamlit/streamlit/releases\"\u003estreamlit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.50.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes 🛠\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: deprecate kwargs in st.plotly_chart and add config dict instead by \u003ca href=\"https://github.com/zyfy29\"\u003e\u003ccode\u003e@​zyfy29\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12291\"\u003estreamlit/streamlit#12291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.checkbox\u003c/code\u003e \u0026amp; \u003ccode\u003est.toggle\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12372\"\u003estreamlit/streamlit#12372\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003e**kwargs\u003c/code\u003e support from \u003ccode\u003est.write\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12375\"\u003estreamlit/streamlit#12375\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.number_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12437\"\u003estreamlit/streamlit#12437\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.text_area\u003c/code\u003e \u0026amp; \u003ccode\u003est.text_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12397\"\u003estreamlit/streamlit#12397\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eMultiselectColumn\u003c/code\u003e for \u003ccode\u003est.dataframe\u003c/code\u003e and \u003ccode\u003est.data_editor\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/9223\"\u003estreamlit/streamlit#9223\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for source directly in theming font configs by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12239\"\u003estreamlit/streamlit#12239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[feat] Add \u003ccode\u003edefault\u003c/code\u003e param to \u003ccode\u003est.tabs\u003c/code\u003e by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12313\"\u003estreamlit/streamlit#12313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eborder\u003c/code\u003e parameter to \u003ccode\u003est.table\u003c/code\u003e by \u003ca href=\"https://github.com/jrieke\"\u003e\u003ccode\u003e@​jrieke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/11796\"\u003estreamlit/streamlit#11796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[feat] Hover, active, focus-visible states for CopyButton by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12348\"\u003estreamlit/streamlit#12348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[AdvancedLayouts] Adds a width parameters to \u003ccode\u003est.line_chart\u003c/code\u003e. by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/11923\"\u003estreamlit/streamlit#11923\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd main theme color config options by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12288\"\u003estreamlit/streamlit#12288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for button widgets by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12332\"\u003estreamlit/streamlit#12332\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esort\u003c/code\u003e parameter to \u003ccode\u003est.bar_chart\u003c/code\u003e by \u003ca href=\"https://github.com/jrieke\"\u003e\u003ccode\u003e@​jrieke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12339\"\u003estreamlit/streamlit#12339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd theme background color config options by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12405\"\u003estreamlit/streamlit#12405\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd theme text color config options by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12438\"\u003estreamlit/streamlit#12438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.time_input\u003c/code\u003e \u0026amp; \u003ccode\u003est.date_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12464\"\u003estreamlit/streamlit#12464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[feat] Add sample rate parameter to \u003ccode\u003est.audio_input\u003c/code\u003e component by \u003ca href=\"https://github.com/sfc-gh-nbellante\"\u003e\u003ccode\u003e@​sfc-gh-nbellante\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12272\"\u003estreamlit/streamlit#12272\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMetric supports numerics like decimal. by \u003ca href=\"https://github.com/aebrahim\"\u003e\u003ccode\u003e@​aebrahim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12377\"\u003estreamlit/streamlit#12377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow slider tick labels on hover by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12367\"\u003estreamlit/streamlit#12367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[AdvancedLayouts] Add height param to \u003ccode\u003est.graphviz_chart\u003c/code\u003e by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12297\"\u003estreamlit/streamlit#12297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.selectbox\u003c/code\u003e \u0026amp; \u003ccode\u003est.multiselect\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12493\"\u003estreamlit/streamlit#12493\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport configuring the chart column colors by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12292\"\u003estreamlit/streamlit#12292\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix code usage in markdown labels by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12175\"\u003estreamlit/streamlit#12175\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Fullscreen behaviour for \u003ccode\u003est.image\u003c/code\u003e with use_container_width=True or width=\u0026quot;stretch\u0026quot; by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12235\"\u003estreamlit/streamlit#12235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] DateInput: normalize selected dates to start-of-day to honor max by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12295\"\u003estreamlit/streamlit#12295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure markdown images keep the aspect ratio by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12343\"\u003estreamlit/streamlit#12343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue with typing formatted values into \u003ccode\u003est.number_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12351\"\u003estreamlit/streamlit#12351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] \u003ccode\u003ehtml\u003c/code\u003e with float height.  by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12354\"\u003estreamlit/streamlit#12354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Share more code between Selectbox and Multiselect to align behavior by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12330\"\u003estreamlit/streamlit#12330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix logo pushing out collapse button by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12329\"\u003estreamlit/streamlit#12329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix long-words overflowing markdown container by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12370\"\u003estreamlit/streamlit#12370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MIME type for \u003ccode\u003e.mjs\u003c/code\u003e by \u003ca href=\"https://github.com/geoextra\"\u003e\u003ccode\u003e@​geoextra\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12399\"\u003estreamlit/streamlit#12399\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Pandas styler performance regression by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12422\"\u003estreamlit/streamlit#12422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Allow empty section pages in top navigation similar to how we do it for sidebar nav  by \u003ca href=\"https://github.com/nico-bellante\"\u003e\u003ccode\u003e@​nico-bellante\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12247\"\u003estreamlit/streamlit#12247\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] horizontal alignment of st.image in vertical containers by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12495\"\u003estreamlit/streamlit#12495\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Setting 0 for height/width on components.html and components.iframe .  by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12479\"\u003estreamlit/streamlit#12479\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix duckdb integration test by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12537\"\u003estreamlit/streamlit#12537\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert number input component refactoring by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12547\"\u003estreamlit/streamlit#12547\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd default main colors to theme by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12334\"\u003estreamlit/streamlit#12334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelease/1.49.0 by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12328\"\u003estreamlit/streamlit#12328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelease/1.49.1 by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12376\"\u003estreamlit/streamlit#12376\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/streamlit/streamlit/commit/52736534b6488da3bcb0c9d8bba855855a963678\"\u003e\u003ccode\u003e5273653\u003c/code\u003e\u003c/a\u003e Docstrings for 1.50.0 (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12605\"\u003e#12605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/f831f19024003fb0c0b3195c6150825deb7520fc\"\u003e\u003ccode\u003ef831f19\u003c/code\u003e\u003c/a\u003e Up version to 1.50.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/0ba383ec56e18df5e0efa8d62b8f00626dcfc128\"\u003e\u003ccode\u003e0ba383e\u003c/code\u003e\u003c/a\u003e [feat] Add Patch Release Branch Creation workflow (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12509\"\u003e#12509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/5abda776f6ee13a32ef8e5c5477205a73db1d593\"\u003e\u003ccode\u003e5abda77\u003c/code\u003e\u003c/a\u003e Support configuring the chart column colors (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12292\"\u003e#12292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/9d0e6bdcd383a52a75a12224c84f5e71d886e4a6\"\u003e\u003ccode\u003e9d0e6bd\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.selectbox\u003c/code\u003e \u0026amp; \u003ccode\u003est.multiselect\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12493\"\u003e#12493\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/53b2c4f741c5f3914015c0868e2169449b0735f9\"\u003e\u003ccode\u003e53b2c4f\u003c/code\u003e\u003c/a\u003e Fix pytest warning filter error (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12558\"\u003e#12558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/8608e83d9aadb5f79f03d7f9e817f9b12f24ad45\"\u003e\u003ccode\u003e8608e83\u003c/code\u003e\u003c/a\u003e Add support for new ruff rules (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12538\"\u003e#12538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/dec9d209fcdcfc2092ad5b7ab08ca79622936b5b\"\u003e\u003ccode\u003edec9d20\u003c/code\u003e\u003c/a\u003e Revert number input component refactoring (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12547\"\u003e#12547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/57fd06756fd59112c4247dbdb383ecf3affb2839\"\u003e\u003ccode\u003e57fd067\u003c/code\u003e\u003c/a\u003e [feat] Add Cherry-Pick to Release Branch automation (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12516\"\u003e#12516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/c5aa15cb69d8efe754b0b182f273d262d0f33849\"\u003e\u003ccode\u003ec5aa15c\u003c/code\u003e\u003c/a\u003e Update mypy requirement from \u0026lt;1.18,\u0026gt;=1.16.1 to \u0026gt;=1.16.1,\u0026lt;1.19 in /lib (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12551\"\u003e#12551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/streamlit/streamlit/compare/1.28.0...1.50.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.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 `mypy` from 1.7.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.7.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 `scikit-learn` from 1.3.2 to 1.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scikit-learn/scikit-learn/releases\"\u003escikit-learn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eScikit-learn 1.6.1\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.6.1 release.\u003c/p\u003e\n\u003cp\u003eThis release contains fixes for a few regressions introduced in 1.6.\u003c/p\u003e\n\u003cp\u003eYou can see the changelog here: \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.6.html#version-1-6-1\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.6.html#version-1-6-1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThanks to everyone who contributed to this release !\u003c/p\u003e\n\u003ch2\u003eScikit-learn 1.6.0\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.6.0 release.\u003c/p\u003e\n\u003cp\u003eYou can read the release highlights under \u003ca href=\"https://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_6_0.html\"\u003ehttps://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_6_0.html\u003c/a\u003e and the long version of the change log under \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.6.html\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.6.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis version supports Python versions 3.9 to 3.13 and features an experimental support of free-threaded CPython.\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eScikit-learn 1.5.2\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.5.2 release.\u003c/p\u003e\n\u003cp\u003eThis release contains fixes for a few regressions introduced in 1.5.\u003c/p\u003e\n\u003cp\u003eYou can see the changelog here: \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.5.html#version-1-5-2\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.5.html#version-1-5-2\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/f159b78dc59f250cdde8fe391a21f0bc871960ad\"\u003e\u003ccode\u003ef159b78\u003c/code\u003e\u003c/a\u003e trigger wheel builder [cd build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/73cca70befaa3167903f1fbe15e81df587598f11\"\u003e\u003ccode\u003e73cca70\u003c/code\u003e\u003c/a\u003e generate changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/afaa07062bfd77c5ec15cfc62f0102c257092563\"\u003e\u003ccode\u003eafaa070\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/1f43fd2307c13593ea5ba194dcc5e7a814cfade9\"\u003e\u003ccode\u003e1f43fd2\u003c/code\u003e\u003c/a\u003e DOC: Updates to Macro vs micro-averaging in plot_roc.py (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/29845\"\u003e#29845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/ea8a7259f53c2cd78c1a8341bdab228e621dd2ba\"\u003e\u003ccode\u003eea8a725\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for main CI build(s) :lock: :robot: (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/30593\"\u003e#30593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/bc291f1030aa4f122187d5334a426ab1848a7ee6\"\u003e\u003ccode\u003ebc291f1\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for scipy-dev CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/f5f2b9c7b725a957caf8089d254f9176e8fabda9\"\u003e\u003ccode\u003ef5f2b9c\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for free-threaded CI build(s) :lock: :rob...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/acbb8621c816f12f0648f175edf8acb561768ec5\"\u003e\u003ccode\u003eacbb862\u003c/code\u003e\u003c/a\u003e TST Fix doctest due to GradientBoostingClassifier difference with scipy 1.15 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/42831e522f9f08f34e01cd85d60aa852914b135d\"\u003e\u003ccode\u003e42831e5\u003c/code\u003e\u003c/a\u003e FIX warn if an estimator does have a concrete \u003cstrong\u003esklearn_tags\u003c/strong\u003e implementation...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/0d2ce432de05b1f0c3b055572c08bee332c37724\"\u003e\u003ccode\u003e0d2ce43\u003c/code\u003e\u003c/a\u003e FIX change FutureWarnings to DeprecationWarnings for the tags (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/30573\"\u003e#30573\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scikit-learn/scikit-learn/compare/1.3.2...1.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `statsmodels` from 0.14.1 to 0.14.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/statsmodels/statsmodels/releases\"\u003estatsmodels's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 0.14.6\u003c/h2\u003e\n\u003cp\u003eThis patch release fixes an issue with pandas 3.0.0 that prevented statsmodels from importing. It also addresses some minor changes that improve future compatibility in NumPy.\u003c/p\u003e\n\u003ch2\u003eRelease 0.14.5\u003c/h2\u003e\n\u003cp\u003eThis patch release fixes an issue with recent SciPy releases (1.16+) that prevented statsmodels from importing. It also addresses some small changes that improve future compatibility.\u003c/p\u003e\n\u003ch2\u003eRelease 0.14.4\u003c/h2\u003e\n\u003cp\u003eThe statsmodels developers are pleased to announce the release of 0.14.4. This release contains one feature and no fixes.\u003c/p\u003e\n\u003cp\u003eNew Feature:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePyodide support\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 0.14.3\u003c/h2\u003e\n\u003cp\u003eThis is a packaging and compatibility release that will allow statsmodels to run in environments using NumPy 2 and recent pandas.\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eCorrects the build procedure for MacOS on both x86_64 and arm64\u003c/li\u003e\n\u003cli\u003eImproves compatibility with recent pandas releases\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2\u003eRelease 0.14.2\u003c/h2\u003e\n\u003cp\u003eThis is a compatibility release that will allow statsmodels to run in environments using NumPy 2.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFull compatibility with NumPy 2\u003c/li\u003e\n\u003cli\u003eImproved future proofing against pandas 3 changes\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statsmodels/statsmodels/commit/40e6a84d26ac74623c6b94b718f0987ef0351c53\"\u003e\u003ccode\u003e40e6a84\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/statsmodels/statsmodels/issues/9701\"\u003e#9701\u003c/a\u003e from bashtage/doc-0.14.6-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statsmodels/statsmodels/commit/120ad27d72f85b6f772f97e2f2ac5112b3b004b1\"\u003e\u003ccode\u003e120ad27\u003c/code\u003e\u003c/a\u003e DOC: Release note for 0.14.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statsmodels/statsmodels/commit/e8b0ab012bbc108f528de0abd88f01787e28a483\"\u003e\u003ccode\u003ee8b0ab0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/statsmodels/statsmodels/issues/9700\"\u003e#9700\u003c/a\u003e from bashtage/final-0.14.6-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statsmodels/statsmodels/commit/8ad398a2cc997104d59eb0bf3447f4fabf2e4466\"\u003e\u003ccode\u003e8ad398a\u003c/code\u003e\u003c/a\u003e MAINT: Improve compatability wiht recent NumPy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statsmodels/statsmodels/commit/9495808cfc47f3c80cfeae63ebe72d1541688c65\"\u003e\u003ccode\u003e9495808\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/statsmodels/statsmodels/issues/9633\"\u003e#9633\u003c/a\u003e from bashtage/changes-0-14-6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statsmodels/statsmodels/commit/b44854afd635ef35c38c94ecae9c08d7e790c4cc\"\u003e\u003ccode\u003eb44854a\u003c/code\u003e\u003c/a\u003e STY: Fix linting fails\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statsmodels/statsmodels/commit/e7b2fa569b056e098e3df9134042fe3146034306\"\u003e\u003ccode\u003ee7b2fa5\u003c/code\u003e\u003c/a\u003e MAINT: Update for recent changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statsmodels/statsmodels/commit/1107ea567121b80f90562d6c72085eed7e882113\"\u003e\u003ccode\u003e1107ea5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/statsmodels/statsmodels/issues/9591\"\u003e#9591\u003c/a\u003e from bashtage/rls-0-14-5-notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statsmodels/statsmodels/commit/f3b362a3c8211d062eef65fe11fa33e8e2ea3107\"\u003e\u003ccode\u003ef3b362a\u003c/code\u003e\u003c/a\u003e MAINT: Update CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statsmodels/statsmodels/commit/e2249abfb32ea92a6acc75323ccbdeab6a1fbe93\"\u003e\u003ccode\u003ee2249ab\u003c/code\u003e\u003c/a\u003e DOC: Final fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/statsmodels/statsmodels/compare/v0.14.1...v0.14.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.8.2 to 3.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: 3.9.4\u003c/h2\u003e\n\u003cp\u003eThis is the fourth bugfix release of the 3.9.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains two bug-fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix toolbar icons in GTK backend\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ePoly3DCollection\u003c/code\u003e initialization with list of lists\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eREL: 3.9.3\u003c/h2\u003e\n\u003cp\u003eThis is the third bugfix release of the 3.9.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains several bug-fixes and adjustments:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eaxline\u003c/code\u003e with extremely small slopes\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eaxline\u003c/code\u003e with non-linear axis scales\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eminimumSizeHint\u003c/code\u003e with Qt backend\u003c/li\u003e\n\u003cli\u003eFix config directory usage when it's behind a symlink\u003c/li\u003e\n\u003cli\u003eFix draggable legend when blitting is enabled\u003c/li\u003e\n\u003cli\u003eFix high CPU utilization in the \u003ccode\u003emacosx\u003c/code\u003e backend\u003c/li\u003e\n\u003cli\u003eFix multiple hatch \u003ccode\u003eedgecolors\u003c/code\u003e passed to \u003ccode\u003econtourf\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove compatibility with \u003ccode\u003epytest\u003c/code\u003e 8.2.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eREL: 3.9.2\u003c/h2\u003e\n\u003cp\u003eThis is the second bugfix release of the 3.9.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains several bug-fixes and adjustments:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBe more resilient to I/O failures when writing font cache\u003c/li\u003e\n\u003cli\u003eFix nondeterministic behavior with subplot spacing and constrained layout\u003c/li\u003e\n\u003cli\u003eFix sticky edge tolerance relative to data range\u003c/li\u003e\n\u003cli\u003eImprove formatting of image values in cases of singular norms\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWindows wheels now bundle the MSVC runtime DLL statically to avoid inconsistencies with other wheels and random crashes depending on import order.\u003c/p\u003e\n\u003ch2\u003eREL: 3.9.1\u003c/h2\u003e\n\u003cp\u003eThis is the first bugfix release of the 3.9.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains several bug-fixes and adjustments:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd GitHub artifact attestations for sdist and wheels\u003c/li\u003e\n\u003cli\u003eRe-add \u003ccode\u003ematplotlib.cm.get_cmap\u003c/code\u003e; note this function will still be removed at a later date\u003c/li\u003e\n\u003cli\u003eAllow duplicate backend entry points\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAxes\u003c/code\u003e autoscaling of thin bars at large locations\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAxes\u003c/code\u003e autoscaling with \u003ccode\u003eaxhspan\u003c/code\u003e / \u003ccode\u003eaxvspan\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAxes3D\u003c/code\u003e autoscaling of \u003ccode\u003eLine3DCollection\u003c/code\u003e / \u003ccode\u003ePoly3DCollection\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAxes3D\u003c/code\u003e mouse interactivity with non-default roll angle\u003c/li\u003e\n\u003cli\u003eFix box aspect ratios in \u003ccode\u003eAxes3D\u003c/code\u003e with alternate vertical axis\u003c/li\u003e\n\u003cli\u003eFix case handling of backends specified as \u003ccode\u003emodule://...\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix crash with TkAgg on Windows with \u003ccode\u003etk.window_focus: True\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix interactive update of SubFigures\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/69a98115f8bdaf0f3f615b062d3a380f01f017df\"\u003e\u003ccode\u003e69a9811\u003c/code\u003e\u003c/a\u003e REL: 3.9.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/beb28e9ae646896f772a46468c76a26007d87cf5\"\u003e\u003ccode\u003ebeb28e9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/29297\"\u003e#29297\u003c/a\u003e from QuLogic/auto-backport-of-pr-29295-on-v3.9.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/9d3cc1ec1c68943932059a15ff199bdd6d458fc0\"\u003e\u003ccode\u003e9d3cc1e\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/29295\"\u003e#29295\u003c/a\u003e: BLD: Pin meson-python to \u0026lt;0.17.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/57f7fdf74703eaeec77acdadc7ec655321f602f0\"\u003e\u003ccode\u003e57f7fdf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/29175\"\u003e#29175\u003c/a\u003e from vicliu2001/v3.9.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/3982428df4fed6cb0a6c6ee433e6b8a0d2933e7c\"\u003e\u003ccode\u003e3982428\u003c/code\u003e\u003c/a\u003e changed plot.show to plot.draw\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/6348165c649e8efb410582025534f73997661666\"\u003e\u003ccode\u003e6348165\u003c/code\u003e\u003c/a\u003e modified test for _generate_normals\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/1d7e71eafa2e9f22f605b0cd767165e38fb10a25\"\u003e\u003ccode\u003e1d7e71e\u003c/code\u003e\u003c/a\u003e DOC: Add Zenodo DOI for 3.9.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/4d1e3d247c3e6986f18623abfb7e9d4b6e4f46b2\"\u003e\u003ccode\u003e4d1e3d2\u003c/code\u003e\u003c/a\u003e BLD: bump branch away from tag\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/3ac0aea8be540028cb2510dabb43b290d15b503d\"\u003e\u003ccode\u003e3ac0aea\u003c/code\u003e\u003c/a\u003e REL: 3.9.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/3f7adbd87e281f211779870c38d6bb5da84edc46\"\u003e\u003ccode\u003e3f7adbd\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.9.2-doc' into v3.9.x\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.8.2...v3.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `seaborn` from 0.13.0 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/mwaskom/seaborn/releases\"\u003eseaborn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.13.2 (January 2024)\u003c/h2\u003e\n\u003cp\u003eThis is a minor release containing internal changes that adapt to upcoming deprecations in pandas. All users are encouraged to update.\u003c/p\u003e\n\u003ch2\u003ev0.13.1 (December 2023)\u003c/h2\u003e\n\u003cp\u003eThis is a minor release with some bug fixes and a couple new features. All users are encouraged to update.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e|Feature| Added support for weighted mean estimation (with boostrap CIs) in \u003ccode\u003elineplot\u003c/code\u003e, \u003ccode\u003ebarplot\u003c/code\u003e, \u003ccode\u003epointplot\u003c/code\u003e, and \u003ccode\u003eobjects.Est\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3580\"\u003e#3580\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3586\"\u003e#3586\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e|Feature| Added the \u003ccode\u003eextent\u003c/code\u003e option in \u003ccode\u003eobjects.Plot.layout\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3552\"\u003e#3552\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e|Fix| Fixed a regression in v0.13.0 that triggered an exception when working with non-numpy data types (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3516\"\u003e#3516\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e|Fix| Fixed a bug in \u003ccode\u003eobjects.Plot\u003c/code\u003e so that tick labels are shown for wrapped axes that aren't in the bottom-most row (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3600\"\u003e#3600\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e|Fix| Fixed a bug in \u003ccode\u003ecatplot\u003c/code\u003e where a blank legend would be added when \u003ccode\u003ehue\u003c/code\u003e was redundantly assigned (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3540\"\u003e#3540\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e|Fix| Fixed a bug in \u003ccode\u003ecatplot\u003c/code\u003e where the \u003ccode\u003eedgecolor\u003c/code\u003e parameter was ignored with \u003ccode\u003ekind=\u0026quot;bar\u0026quot;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3547\"\u003e#3547\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e|Fix| Fixed a bug in \u003ccode\u003eboxplot\u003c/code\u003e where an exception was raised when using the matplotlib \u003ccode\u003ebootstrap\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3562\"\u003e#3562\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e|Fix| Fixed a bug in \u003ccode\u003elineplot\u003c/code\u003e where an exception was raised when \u003ccode\u003ehue\u003c/code\u003e was assigned with an empty dataframe (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3569\"\u003e#3569\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e|Fix| Fixed a bug in multiple categorical plots that raised with \u003ccode\u003ehue=None\u003c/code\u003e and \u003ccode\u003edodge=True\u003c/code\u003e; this is now has no effect (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3605\"\u003e#3605\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mwaskom/seaborn/commit/9521ea1f29b5ce1df1aa2ed6f65f3bd1c63884bb\"\u003e\u003ccode\u003e9521ea1\u003c/code\u003e\u003c/a\u003e Bump version for v0.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mwaskom/seaborn/commit/7910f1335e1cefae0c29dcb1d6b0e6592737c837\"\u003e\u003ccode\u003e7910f13\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into v0.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mwaskom/seaborn/commit/b95d6d1ce9dfed6970015d8bdad9068b5749868a\"\u003e\u003ccode\u003eb95d6d1\u003c/code\u003e\u003c/a\u003e Tweak language\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mwaskom/seaborn/commit/877ca7c0d516bafa51118aceee01b8a7a251deb1\"\u003e\u003ccode\u003e877ca7c\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into v0.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mwaskom/seaborn/commit/5ef7c27aac9f96e97fa1aac0ba106bac7d3febf0\"\u003e\u003ccode\u003e5ef7c27\u003c/code\u003e\u003c/a\u003e Add v0.13.2 release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mwaskom/seaborn/commit/7aed2a044ce2754a53729251184d65b723ada892\"\u003e\u003ccode\u003e7aed2a0\u003c/code\u003e\u003c/a\u003e Adapt to deprecations in pandas 2.2.0 (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3620\"\u003e#3620\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mwaskom/seaborn/commit/a3cb0f1b33551eb25fed1907d0abdd0237fac215\"\u003e\u003ccode\u003ea3cb0f1\u003c/code\u003e\u003c/a\u003e microscopic typofix: \u0026quot;swaarms\u0026quot; (\u003ca href=\"https://redirect.github.com/mwaskom/seaborn/issues/3611\"\u003e#3611\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mwaskom/seaborn/commit/d00a27df750130e28e4801caaedc782433863a37\"\u003e\u003ccode\u003ed00a27d\u003c/code\u003e\u003c/a\u003e Merge master and update version for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mwaskom/seaborn/commit/6890b315d00b74f372bc91f3929c803837b2ddf1\"\u003e\u003ccode\u003e6890b31\u003c/code\u003e\u003c/a\u003e Finalize v0.13.1 release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mwaskom/seaborn/commit/1771d8e2c903847d4274963638fbae32c52bd2d8\"\u003e\u003ccode\u003e1771d8e\u003c/code\u003e\u003c/a\u003e Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mwaskom/seaborn/compare/v0.13.0...v0.13.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery` from 5.3.4 to 5.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/releases\"\u003ecelery's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.6.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix recursive WorkController instantiation in DjangoWorkerFixup + AttributeError when pool_cls is a string by \u003ca href=\"https://github.com/bruunotrindade\"\u003e\u003ccode\u003e@​bruunotrindade\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10045\"\u003ecelery/celery#10045\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBugfix: Revoked tasks now immediately update backend status to REVOKED by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9869\"\u003ecelery/celery#9869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.2 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10049\"\u003ecelery/celery#10049\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/bruunotrindade\"\u003e\u003ccode\u003e@​bruunotrindade\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10045\"\u003ecelery/celery#10045\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/celery/compare/v5.6.1...v5.6.2\"\u003ehttps://github.com/celery/celery/compare/v5.6.1...v5.6.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.6.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Redis Sentinel ACL authentication support by \u003ca href=\"https://github.com/anthonykuzmich7\"\u003e\u003ccode\u003e@​anthonykuzmich7\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10013\"\u003ecelery/celery#10013\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Broker heartbeats not sent during graceful shutdown by \u003ca href=\"https://github.com/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9986\"\u003ecelery/celery#9986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs \u003ca href=\"https://redirect.github.com/celery/celery/issues/5410\"\u003e#5410\u003c/a\u003e -- Document confirm_publish broker transport option by \u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10016\"\u003ecelery/celery#10016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eclose DB pools only in prefork mode by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10020\"\u003ecelery/celery#10020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Avoid unnecessary Django database connection creation during cleanup by \u003ca href=\"https://github.com/snopoke\"\u003e\u003ccode\u003e@​snopoke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10015\"\u003ecelery/celery#10015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ereliable prefork detection by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10023\"\u003ecelery/celery#10023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebetter coverage by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10029\"\u003ecelery/celery#10029\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: clarify \u003ccode\u003eresult_extended\u003c/code\u003e vs periodic task metadata and show \u003ccode\u003eheaders[\u0026quot;periodic_task_name\u0026quot;]\u003c/code\u003e example by \u003ca href=\"https://github.com/SpaceShaman\"\u003e\u003ccode\u003e@​SpaceShaman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10030\"\u003ecelery/celery#10030\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop importing pytest_subtests by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10032\"\u003ecelery/celery#10032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly use exceptiongroup backport for Python \u0026lt; 3.11 by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10033\"\u003ecelery/celery#10033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.1 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10037\"\u003ecelery/celery#10037\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/anthonykuzmich7\"\u003e\u003ccode\u003e@​anthonykuzmich7\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10013\"\u003ecelery/celery#10013\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9986\"\u003ecelery/celery#9986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10016\"\u003ecelery/celery#10016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snopoke\"\u003e\u003ccode\u003e@​snopoke\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10015\"\u003ecelery/celery#10015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SpaceShaman\"\u003e\u003ccode\u003e@​SpaceShaman\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10030\"\u003ecelery/celery#10030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/celery/compare/v5.6.0...v5.6.1\"\u003ehttps://github.com/celery/celery/compare/v5.6.0...v5.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.6.0\u003c/h2\u003e\n\u003cp\u003eCelery v5.6.0 is now available.\u003c/p\u003e\n\u003ch2\u003eKey Highlights\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://docs.celeryq.dev/en/stable/history/whatsnew-5.6.html\"\u003eWhat's new in Celery 5.6\u003c/a\u003e for a complete overview or read the main highlights below.\u003c/p\u003e\n\u003ch3\u003ePython 3.9 Minimum Version\u003c/h3\u003e\n\u003cp\u003eCelery 5.6.0 drops support for Python 3.8 (EOL). The minimum required Python version is now 3.9. Users still on Python 3.8 must upgrade their Python version before upgrading to Celery 5.6.0.\u003c/p\u003e\n\u003cp\u003eAdditionally, this release includes initial support for Python 3.14.\u003c/p\u003e\n\u003ch3\u003eSQS: Reverted to \u003ccode\u003epycurl\u003c/code\u003e from \u003ccode\u003eurllib3\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe switch from \u003ccode\u003epycurl\u003c/code\u003e to \u003ccode\u003eurllib3\u003c/code\u003e for the SQS transport (introduced in Celery 5.5.0 via Kombu) has been reverted due to critical issues affecting SQS users.\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/celery/celery/blob/main/Changelog.rst\"\u003ecelery's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.6.2\u003c/h1\u003e\n\u003cp\u003e:release-date: 2026-01-04\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Fix recursive WorkController instantiation in DjangoWorkerFixup + AttributeError when pool_cls is a string ([#10045](https://github.com/celery/celery/issues/10045))\n- Bugfix: Revoked tasks now immediately update backend status to REVOKED ([#9869](https://github.com/celery/celery/issues/9869))\n- Prepare for release: v5.6.2 ([#10049](https://github.com/celery/celery/issues/10049))\n\u003cp\u003e.. _version-5.6.1:\u003c/p\u003e\n\u003ch1\u003e5.6.1\u003c/h1\u003e\n\u003cp\u003e:release-date: 2025-12-29\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Redis Sentinel ACL authentication support (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10013\"\u003e#10013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: Broker heartbeats not sent during graceful shutdown (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9986\"\u003e#9986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs \u003ca href=\"https://redirect.github.com/celery/celery/issues/5410\"\u003e#5410\u003c/a\u003e -- Document confirm_publish broker transport option (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eclose DB pools only in prefork mode (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10020\"\u003e#10020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: Avoid unnecessary Django database connection creation during cleanup (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereliable prefork detection (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10023\"\u003e#10023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebetter coverage (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10029\"\u003e#10029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocs: clarify \u003ccode\u003eresult_extended\u003c/code\u003e vs periodic task metadata and show \u003ccode\u003eheaders[\u0026quot;periodic_task_name\u0026quot;]\u003c/code\u003e example (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10030\"\u003e#10030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStop importing pytest_subtests (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10032\"\u003e#10032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOnly use exceptiongroup backport for Python \u0026lt; 3.11 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10033\"\u003e#10033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.1 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10037\"\u003e#10037\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _version-5.6.0:\u003c/p\u003e\n\u003ch1\u003e5.6.0\u003c/h1\u003e\n\u003cp\u003e:release-date: 2025-11-30\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eCelery v5.6.0 is now available.\u003c/p\u003e\n\u003cp\u003eKey Highlights\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nSee :ref:`whatsnew-5.6` for a complete overview or read the main highlights below.\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/6a43c846f183ef0cbade24f4b9a8f7a6ea113b44\"\u003e\u003ccode\u003e6a43c84\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.2 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10049\"\u003e#10049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/333a82f746734151c5cbe848916085455b0a3748\"\u003e\u003ccode\u003e333a82f\u003c/code\u003e\u003c/a\u003e Bugfix: Revoked tasks now immediately update backend status to REVOKED (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9869\"\u003e#9869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/9d6ab110d947270c4edf0b42454266d2954e653d\"\u003e\u003ccode\u003e9d6ab11\u003c/code\u003e\u003c/a\u003e Fix recursive WorkController instantiation in DjangoWorkerFixup + AttributeEr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/21dbc73f81d2fae058de49e665afaa1cd92da5c0\"\u003e\u003ccode\u003e21dbc73\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.1 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10037\"\u003e#10037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/ba20bed7723c684d12ddd62d6a7c0c0d901b3351\"\u003e\u003ccode\u003eba20bed\u003c/code\u003e\u003c/a\u003e Only use exceptiongroup backport for Python \u0026lt; 3.11 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10033\"\u003e#10033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/21675299bc2d10c648448ec5221136e07c1eec1a\"\u003e\u003ccode\u003e2167529\u003c/code\u003e\u003c/a\u003e Stop importing pytest_subtests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/0527296acb1f1790788301d4395ba6d5ce2a9704\"\u003e\u003ccode\u003e0527296\u003c/code\u003e\u003c/a\u003e Bump google-cloud-firestore from 2.21.0 to 2.22.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/5f8659bdba4561796d66e938a1e2c71d4489562f\"\u003e\u003ccode\u003e5f8659b\u003c/code\u003e\u003c/a\u003e Clarify 'result_extended' setting usag...\n\n_Description has been truncated_","html_url":"https://github.com/ChunkyTortoise/EnterpriseHub/pull/23","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChunkyTortoise%2FEnterpriseHub/issues/23","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/23/packages"}},{"old_version":"1.6.4","new_version":"1.9.0","update_type":"minor","path":null,"pr_created_at":"2026-01-20T02:21:25.000Z","version_change":"1.6.4 → 1.9.0","issue":{"uuid":"3831753892","node_id":"PR_kwDOQf0FPs6-HQCJ","number":22,"state":"open","title":"chore(deps): bump the python-minor-patch group across 1 directory with 37 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-20T02:21:25.000Z","updated_at":"2026-01-20T02:21:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor-patch","update_count":37,"packages":[{"name":"streamlit","old_version":"1.28.0","new_version":"1.50.0","repository_url":"https://github.com/streamlit/streamlit"},{"name":"pandas","old_version":"2.1.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"python-dotenv","old_version":"1.0.0","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"flake8","old_version":"7.0.0","new_version":"7.3.0","repository_url":"https://github.com/pycqa/flake8"},{"name":"mypy","old_version":"1.8.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"scikit-learn","old_version":"1.4.0","new_version":"1.6.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"matplotlib","old_version":"3.8.2","new_version":"3.9.4","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"celery","old_version":"5.3.4","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"scipy","old_version":"1.11.4","new_version":"1.13.1","repository_url":"https://github.com/scipy/scipy"},{"name":"anthropic","old_version":"0.18.1","new_version":"0.76.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"textblob","old_version":"0.17.1","new_version":"0.19.0","repository_url":"https://github.com/sloria/TextBlob"},{"name":"fastapi","old_version":"0.110.0","new_version":"0.128.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.27.1","new_version":"0.39.0"},{"name":"pydantic","old_version":"2.6.1","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.1.0","new_version":"2.11.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"httpx","old_version":"0.26.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"python-jose","old_version":"3.3.0","new_version":"3.5.0"},{"name":"python-multipart","old_version":"0.0.6","new_version":"0.0.20","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"openpyxl","old_version":"3.1.2","new_version":"3.1.5"},{"name":"playwright","old_version":"1.40.0","new_version":"1.57.0","repository_url":"https://github.com/microsoft/playwright-python"},{"name":"selenium","old_version":"4.16.0","new_version":"4.36.0","repository_url":"https://github.com/SeleniumHQ/Selenium"},{"name":"onnxruntime","old_version":"1.16.3","new_version":"1.20.1","repository_url":"https://github.com/microsoft/onnxruntime"},{"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.3","new_version":"4.14.3"},{"name":"scrapy","old_version":"2.11.0","new_version":"2.13.4","repository_url":"https://github.com/scrapy/scrapy"},{"name":"tweepy","old_version":"4.14.0","new_version":"4.16.0","repository_url":"https://github.com/tweepy/tweepy"},{"name":"praw","old_version":"7.7.1","new_version":"7.8.1","repository_url":"https://github.com/praw-dev/praw"},{"name":"feedparser","old_version":"6.0.10","new_version":"6.0.12","repository_url":"https://github.com/kurtmckee/feedparser"},{"name":"tokenizers","old_version":"0.15.1","new_version":"0.22.2","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"spacy","old_version":"3.7.2","new_version":"3.8.11","repository_url":"https://github.com/explosion/spaCy"},{"name":"websocket-client","old_version":"1.6.4","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"asyncio-mqtt","old_version":"0.13.0","new_version":"0.16.2","repository_url":"https://github.com/sbtinstruments/asyncio-mqtt"},{"name":"kombu","old_version":"5.3.4","new_version":"5.6.2","repository_url":"https://github.com/celery/kombu"},{"name":"sqlalchemy","old_version":"2.0.25","new_version":"2.0.45","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"asyncpg","old_version":"0.29.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"alembic","old_version":"1.13.1","new_version":"1.16.5","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"coverage","old_version":"7.4.0","new_version":"7.10.7","repository_url":"https://github.com/coveragepy/coveragepy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 37 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.28.0` | `1.50.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.1.3` | `2.3.3` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.0` | `1.2.1` |\n| [flake8](https://github.com/pycqa/flake8) | `7.0.0` | `7.3.0` |\n| [mypy](https://github.com/python/mypy) | `1.8.0` | `1.19.1` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.4.0` | `1.6.1` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.8.2` | `3.9.4` |\n| [celery](https://github.com/celery/celery) | `5.3.4` | `5.6.2` |\n| [scipy](https://github.com/scipy/scipy) | `1.11.4` | `1.13.1` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `0.18.1` | `0.76.0` |\n| [textblob](https://github.com/sloria/TextBlob) | `0.17.1` | `0.19.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.110.0` | `0.128.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.27.1` | `0.39.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.6.1` | `2.12.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.1.0` | `2.11.0` |\n| [httpx](https://github.com/encode/httpx) | `0.26.0` | `0.28.1` |\n| [python-jose[cryptography]](https://github.com/mpdavis/python-jose) | `3.3.0` | `3.5.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.6` | `0.0.20` |\n| [openpyxl](https://openpyxl.readthedocs.io) | `3.1.2` | `3.1.5` |\n| [playwright](https://github.com/microsoft/playwright-python) | `1.40.0` | `1.57.0` |\n| [selenium](https://github.com/SeleniumHQ/Selenium) | `4.16.0` | `4.36.0` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.16.3` | `1.20.1` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.32.5` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.12.3` | `4.14.3` |\n| [scrapy](https://github.com/scrapy/scrapy) | `2.11.0` | `2.13.4` |\n| [tweepy](https://github.com/tweepy/tweepy) | `4.14.0` | `4.16.0` |\n| [praw](https://github.com/praw-dev/praw) | `7.7.1` | `7.8.1` |\n| [feedparser](https://github.com/kurtmckee/feedparser) | `6.0.10` | `6.0.12` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.15.1` | `0.22.2` |\n| [spacy](https://github.com/explosion/spaCy) | `3.7.2` | `3.8.11` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.6.4` | `1.9.0` |\n| [asyncio-mqtt](https://github.com/sbtinstruments/asyncio-mqtt) | `0.13.0` | `0.16.2` |\n| [kombu](https://github.com/celery/kombu) | `5.3.4` | `5.6.2` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.25` | `2.0.45` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.29.0` | `0.31.0` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.13.1` | `1.16.5` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.4.0` | `7.10.7` |\n\n\nUpdates `streamlit` from 1.28.0 to 1.50.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/streamlit/streamlit/releases\"\u003estreamlit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.50.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes 🛠\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: deprecate kwargs in st.plotly_chart and add config dict instead by \u003ca href=\"https://github.com/zyfy29\"\u003e\u003ccode\u003e@​zyfy29\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12291\"\u003estreamlit/streamlit#12291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.checkbox\u003c/code\u003e \u0026amp; \u003ccode\u003est.toggle\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12372\"\u003estreamlit/streamlit#12372\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003e**kwargs\u003c/code\u003e support from \u003ccode\u003est.write\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12375\"\u003estreamlit/streamlit#12375\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.number_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12437\"\u003estreamlit/streamlit#12437\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.text_area\u003c/code\u003e \u0026amp; \u003ccode\u003est.text_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12397\"\u003estreamlit/streamlit#12397\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eMultiselectColumn\u003c/code\u003e for \u003ccode\u003est.dataframe\u003c/code\u003e and \u003ccode\u003est.data_editor\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/9223\"\u003estreamlit/streamlit#9223\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for source directly in theming font configs by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12239\"\u003estreamlit/streamlit#12239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[feat] Add \u003ccode\u003edefault\u003c/code\u003e param to \u003ccode\u003est.tabs\u003c/code\u003e by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12313\"\u003estreamlit/streamlit#12313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eborder\u003c/code\u003e parameter to \u003ccode\u003est.table\u003c/code\u003e by \u003ca href=\"https://github.com/jrieke\"\u003e\u003ccode\u003e@​jrieke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/11796\"\u003estreamlit/streamlit#11796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[feat] Hover, active, focus-visible states for CopyButton by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12348\"\u003estreamlit/streamlit#12348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[AdvancedLayouts] Adds a width parameters to \u003ccode\u003est.line_chart\u003c/code\u003e. by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/11923\"\u003estreamlit/streamlit#11923\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd main theme color config options by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12288\"\u003estreamlit/streamlit#12288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for button widgets by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12332\"\u003estreamlit/streamlit#12332\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esort\u003c/code\u003e parameter to \u003ccode\u003est.bar_chart\u003c/code\u003e by \u003ca href=\"https://github.com/jrieke\"\u003e\u003ccode\u003e@​jrieke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12339\"\u003estreamlit/streamlit#12339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd theme background color config options by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12405\"\u003estreamlit/streamlit#12405\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd theme text color config options by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12438\"\u003estreamlit/streamlit#12438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.time_input\u003c/code\u003e \u0026amp; \u003ccode\u003est.date_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12464\"\u003estreamlit/streamlit#12464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[feat] Add sample rate parameter to \u003ccode\u003est.audio_input\u003c/code\u003e component by \u003ca href=\"https://github.com/sfc-gh-nbellante\"\u003e\u003ccode\u003e@​sfc-gh-nbellante\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12272\"\u003estreamlit/streamlit#12272\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMetric supports numerics like decimal. by \u003ca href=\"https://github.com/aebrahim\"\u003e\u003ccode\u003e@​aebrahim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12377\"\u003estreamlit/streamlit#12377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow slider tick labels on hover by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12367\"\u003estreamlit/streamlit#12367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[AdvancedLayouts] Add height param to \u003ccode\u003est.graphviz_chart\u003c/code\u003e by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12297\"\u003estreamlit/streamlit#12297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.selectbox\u003c/code\u003e \u0026amp; \u003ccode\u003est.multiselect\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12493\"\u003estreamlit/streamlit#12493\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport configuring the chart column colors by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12292\"\u003estreamlit/streamlit#12292\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix code usage in markdown labels by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12175\"\u003estreamlit/streamlit#12175\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Fullscreen behaviour for \u003ccode\u003est.image\u003c/code\u003e with use_container_width=True or width=\u0026quot;stretch\u0026quot; by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12235\"\u003estreamlit/streamlit#12235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] DateInput: normalize selected dates to start-of-day to honor max by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12295\"\u003estreamlit/streamlit#12295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure markdown images keep the aspect ratio by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12343\"\u003estreamlit/streamlit#12343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue with typing formatted values into \u003ccode\u003est.number_input\u003c/code\u003e by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12351\"\u003estreamlit/streamlit#12351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] \u003ccode\u003ehtml\u003c/code\u003e with float height.  by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12354\"\u003estreamlit/streamlit#12354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Share more code between Selectbox and Multiselect to align behavior by \u003ca href=\"https://github.com/sfc-gh-bnisco\"\u003e\u003ccode\u003e@​sfc-gh-bnisco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12330\"\u003estreamlit/streamlit#12330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix logo pushing out collapse button by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12329\"\u003estreamlit/streamlit#12329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix long-words overflowing markdown container by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12370\"\u003estreamlit/streamlit#12370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MIME type for \u003ccode\u003e.mjs\u003c/code\u003e by \u003ca href=\"https://github.com/geoextra\"\u003e\u003ccode\u003e@​geoextra\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12399\"\u003estreamlit/streamlit#12399\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Pandas styler performance regression by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12422\"\u003estreamlit/streamlit#12422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Allow empty section pages in top navigation similar to how we do it for sidebar nav  by \u003ca href=\"https://github.com/nico-bellante\"\u003e\u003ccode\u003e@​nico-bellante\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12247\"\u003estreamlit/streamlit#12247\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] horizontal alignment of st.image in vertical containers by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12495\"\u003estreamlit/streamlit#12495\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[fix] Setting 0 for height/width on components.html and components.iframe .  by \u003ca href=\"https://github.com/sfc-gh-lwilby\"\u003e\u003ccode\u003e@​sfc-gh-lwilby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12479\"\u003estreamlit/streamlit#12479\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix duckdb integration test by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12537\"\u003estreamlit/streamlit#12537\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert number input component refactoring by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12547\"\u003estreamlit/streamlit#12547\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd default main colors to theme by \u003ca href=\"https://github.com/mayagbarnes\"\u003e\u003ccode\u003e@​mayagbarnes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12334\"\u003estreamlit/streamlit#12334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelease/1.49.0 by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12328\"\u003estreamlit/streamlit#12328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelease/1.49.1 by \u003ca href=\"https://github.com/lukasmasuch\"\u003e\u003ccode\u003e@​lukasmasuch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/streamlit/streamlit/pull/12376\"\u003estreamlit/streamlit#12376\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/streamlit/streamlit/commit/52736534b6488da3bcb0c9d8bba855855a963678\"\u003e\u003ccode\u003e5273653\u003c/code\u003e\u003c/a\u003e Docstrings for 1.50.0 (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12605\"\u003e#12605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/f831f19024003fb0c0b3195c6150825deb7520fc\"\u003e\u003ccode\u003ef831f19\u003c/code\u003e\u003c/a\u003e Up version to 1.50.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/0ba383ec56e18df5e0efa8d62b8f00626dcfc128\"\u003e\u003ccode\u003e0ba383e\u003c/code\u003e\u003c/a\u003e [feat] Add Patch Release Branch Creation workflow (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12509\"\u003e#12509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/5abda776f6ee13a32ef8e5c5477205a73db1d593\"\u003e\u003ccode\u003e5abda77\u003c/code\u003e\u003c/a\u003e Support configuring the chart column colors (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12292\"\u003e#12292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/9d0e6bdcd383a52a75a12224c84f5e71d886e4a6\"\u003e\u003ccode\u003e9d0e6bd\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003ekey\u003c/code\u003e as main identity for \u003ccode\u003est.selectbox\u003c/code\u003e \u0026amp; \u003ccode\u003est.multiselect\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12493\"\u003e#12493\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/53b2c4f741c5f3914015c0868e2169449b0735f9\"\u003e\u003ccode\u003e53b2c4f\u003c/code\u003e\u003c/a\u003e Fix pytest warning filter error (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12558\"\u003e#12558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/8608e83d9aadb5f79f03d7f9e817f9b12f24ad45\"\u003e\u003ccode\u003e8608e83\u003c/code\u003e\u003c/a\u003e Add support for new ruff rules (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12538\"\u003e#12538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/dec9d209fcdcfc2092ad5b7ab08ca79622936b5b\"\u003e\u003ccode\u003edec9d20\u003c/code\u003e\u003c/a\u003e Revert number input component refactoring (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12547\"\u003e#12547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/57fd06756fd59112c4247dbdb383ecf3affb2839\"\u003e\u003ccode\u003e57fd067\u003c/code\u003e\u003c/a\u003e [feat] Add Cherry-Pick to Release Branch automation (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12516\"\u003e#12516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/streamlit/streamlit/commit/c5aa15cb69d8efe754b0b182f273d262d0f33849\"\u003e\u003ccode\u003ec5aa15c\u003c/code\u003e\u003c/a\u003e Update mypy requirement from \u0026lt;1.18,\u0026gt;=1.16.1 to \u0026gt;=1.16.1,\u0026lt;1.19 in /lib (\u003ca href=\"https://redirect.github.com/streamlit/streamlit/issues/12551\"\u003e#12551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/streamlit/streamlit/compare/1.28.0...1.50.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pandas` from 2.1.3 to 2.3.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pandas-dev/pandas/releases\"\u003epandas's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePandas 2.3.3\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.3.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3/whatsnew/v2.3.3.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.3 supports Python 3.9 and higher, and is the first release to support Python 3.14.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003ch2\u003ePandas 2.3.2\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.2.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3/whatsnew/v2.3.2.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.2 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003ch2\u003ePandas 2.3.1\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.1.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3.1/whatsnew/v2.3.1.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.1 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\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/pandas-dev/pandas/commit/9c8bc3e55188c8aff37207a74f1dd144980b8874\"\u003e\u003ccode\u003e9c8bc3e\u003c/code\u003e\u003c/a\u003e RLS: 2.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/6aa788a00bda9b0f004302076dad94df3edeafc7\"\u003e\u003ccode\u003e6aa788a\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DOC: prepare 2.3.3 whatsnew notes for release (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62499\"\u003e#62499\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62508\"\u003e#62508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/b64f0df403d11ac733d9f460f89a5e99c8044ed0\"\u003e\u003ccode\u003eb64f0df\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: avoid validation error for ufunc with string[python] ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/058eb2b0edfc408dae9966ef1f03372f2a3ff04c\"\u003e\u003ccode\u003e058eb2b\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: String[pyarrow] comparison with mixed object (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62424\"\u003e#62424\u003c/a\u003e) (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/2ca088daef6a9d9333fea8aedffc7e50d28dfdee\"\u003e\u003ccode\u003e2ca088d\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DEPR: remove the Period resampling deprecation (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62480\"\u003e#62480\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62\"\u003e#62\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/92bf98f623572ed053d48be5818c8503f1b61888\"\u003e\u003ccode\u003e92bf98f\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: fix .str.isdigit to honor unicode superscript for older...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/e57c7d6a2247316188fba0ba2a0db3c11028d75c\"\u003e\u003ccode\u003ee57c7d6\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62452\"\u003e#62452\u003c/a\u003e on branch 2.3.x (TST: Adjust tests for numexpr 2.13) (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62454\"\u003e#62454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/e0fe9a03c90e560c34a3bbbdd1735a8b64f7b281\"\u003e\u003ccode\u003ee0fe9a0\u003c/code\u003e\u003c/a\u003e Backport to 2.3.x: REGR: from_records not initializing subclasses properly (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/23a1085e641c8e3a5b500e319c5973e4160b9236\"\u003e\u003ccode\u003e23a1085\u003c/code\u003e\u003c/a\u003e BUG: improve future warning for boolean operations with missaligned indexes (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/61136969fb18b438b6660bd5d485d0236dbf4a71\"\u003e\u003ccode\u003e6113696\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62396\"\u003e#62396\u003c/a\u003e on branch 2.3.x (PKG/DOC: indicate Python 3.14 support in ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pandas-dev/pandas/compare/v2.1.3...v2.3.3\"\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 `flake8` from 7.0.0 to 7.3.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/c48217e1fc006c2dddd14df54e83b67da15de5cd\"\u003e\u003ccode\u003ec48217e\u003c/code\u003e\u003c/a\u003e Release 7.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f9e0f33281d5bb892cae2c674ac398439d99c732\"\u003e\u003ccode\u003ef9e0f33\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/1986\"\u003e#1986\u003c/a\u003e from PyCQA/document-f542\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/6bcdb628597fa2d03494965089ff87a492ffc1e9\"\u003e\u003ccode\u003e6bcdb62\u003c/code\u003e\u003c/a\u003e document F542\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/70a15b8890d5bdf8c449ebb1b5259bd0140cc16b\"\u003e\u003ccode\u003e70a15b8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/1985\"\u003e#1985\u003c/a\u003e from PyCQA/upgrade-deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/4941a3e32e54488698ecbc23993bfeb2a60c0fc5\"\u003e\u003ccode\u003e4941a3e\u003c/code\u003e\u003c/a\u003e upgrade pyflakes / pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/23e4005c5501999c29e1e3774de7ed18d1e4e22d\"\u003e\u003ccode\u003e23e4005\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/1983\"\u003e#1983\u003c/a\u003e from PyCQA/py314\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/019424b80d3d7d5d8a2a1638f5877080546e3f46\"\u003e\u003ccode\u003e019424b\u003c/code\u003e\u003c/a\u003e add support for t-strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/6b6f3d5fefecc994a06f425c18c3cddc9b71e4a4\"\u003e\u003ccode\u003e6b6f3d5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/1980\"\u003e#1980\u003c/a\u003e from PyCQA/asottile-patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/8dfa6695b4fb1e1401b357367a0a71037d29f6aa\"\u003e\u003ccode\u003e8dfa669\u003c/code\u003e\u003c/a\u003e add rtd sphinx config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/ce3411118382d9332feb2749c8f417d10bfa2584\"\u003e\u003ccode\u003ece34111\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/1976\"\u003e#1976\u003c/a\u003e from PyCQA/document-f824\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.0.0...7.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.8.0 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.8.0...v1.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scikit-learn` from 1.4.0 to 1.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scikit-learn/scikit-learn/releases\"\u003escikit-learn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eScikit-learn 1.6.1\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.6.1 release.\u003c/p\u003e\n\u003cp\u003eThis release contains fixes for a few regressions introduced in 1.6.\u003c/p\u003e\n\u003cp\u003eYou can see the changelog here: \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.6.html#version-1-6-1\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.6.html#version-1-6-1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThanks to everyone who contributed to this release !\u003c/p\u003e\n\u003ch2\u003eScikit-learn 1.6.0\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.6.0 release.\u003c/p\u003e\n\u003cp\u003eYou can read the release highlights under \u003ca href=\"https://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_6_0.html\"\u003ehttps://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_6_0.html\u003c/a\u003e and the long version of the change log under \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.6.html\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.6.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis version supports Python versions 3.9 to 3.13 and features an experimental support of free-threaded CPython.\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eScikit-learn 1.5.2\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.5.2 release.\u003c/p\u003e\n\u003cp\u003eThis release contains fixes for a few regressions introduced in 1.5.\u003c/p\u003e\n\u003cp\u003eYou can see the changelog here: \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.5.html#version-1-5-2\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.5.html#version-1-5-2\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/f159b78dc59f250cdde8fe391a21f0bc871960ad\"\u003e\u003ccode\u003ef159b78\u003c/code\u003e\u003c/a\u003e trigger wheel builder [cd build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/73cca70befaa3167903f1fbe15e81df587598f11\"\u003e\u003ccode\u003e73cca70\u003c/code\u003e\u003c/a\u003e generate changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/afaa07062bfd77c5ec15cfc62f0102c257092563\"\u003e\u003ccode\u003eafaa070\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/1f43fd2307c13593ea5ba194dcc5e7a814cfade9\"\u003e\u003ccode\u003e1f43fd2\u003c/code\u003e\u003c/a\u003e DOC: Updates to Macro vs micro-averaging in plot_roc.py (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/29845\"\u003e#29845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/ea8a7259f53c2cd78c1a8341bdab228e621dd2ba\"\u003e\u003ccode\u003eea8a725\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for main CI build(s) :lock: :robot: (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/30593\"\u003e#30593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/bc291f1030aa4f122187d5334a426ab1848a7ee6\"\u003e\u003ccode\u003ebc291f1\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for scipy-dev CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/f5f2b9c7b725a957caf8089d254f9176e8fabda9\"\u003e\u003ccode\u003ef5f2b9c\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for free-threaded CI build(s) :lock: :rob...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/acbb8621c816f12f0648f175edf8acb561768ec5\"\u003e\u003ccode\u003eacbb862\u003c/code\u003e\u003c/a\u003e TST Fix doctest due to GradientBoostingClassifier difference with scipy 1.15 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/42831e522f9f08f34e01cd85d60aa852914b135d\"\u003e\u003ccode\u003e42831e5\u003c/code\u003e\u003c/a\u003e FIX warn if an estimator does have a concrete \u003cstrong\u003esklearn_tags\u003c/strong\u003e implementation...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/0d2ce432de05b1f0c3b055572c08bee332c37724\"\u003e\u003ccode\u003e0d2ce43\u003c/code\u003e\u003c/a\u003e FIX change FutureWarnings to DeprecationWarnings for the tags (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/30573\"\u003e#30573\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scikit-learn/scikit-learn/compare/1.4.0...1.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.8.2 to 3.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: 3.9.4\u003c/h2\u003e\n\u003cp\u003eThis is the fourth bugfix release of the 3.9.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains two bug-fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix toolbar icons in GTK backend\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ePoly3DCollection\u003c/code\u003e initialization with list of lists\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eREL: 3.9.3\u003c/h2\u003e\n\u003cp\u003eThis is the third bugfix release of the 3.9.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains several bug-fixes and adjustments:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eaxline\u003c/code\u003e with extremely small slopes\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eaxline\u003c/code\u003e with non-linear axis scales\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eminimumSizeHint\u003c/code\u003e with Qt backend\u003c/li\u003e\n\u003cli\u003eFix config directory usage when it's behind a symlink\u003c/li\u003e\n\u003cli\u003eFix draggable legend when blitting is enabled\u003c/li\u003e\n\u003cli\u003eFix high CPU utilization in the \u003ccode\u003emacosx\u003c/code\u003e backend\u003c/li\u003e\n\u003cli\u003eFix multiple hatch \u003ccode\u003eedgecolors\u003c/code\u003e passed to \u003ccode\u003econtourf\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove compatibility with \u003ccode\u003epytest\u003c/code\u003e 8.2.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eREL: 3.9.2\u003c/h2\u003e\n\u003cp\u003eThis is the second bugfix release of the 3.9.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains several bug-fixes and adjustments:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBe more resilient to I/O failures when writing font cache\u003c/li\u003e\n\u003cli\u003eFix nondeterministic behavior with subplot spacing and constrained layout\u003c/li\u003e\n\u003cli\u003eFix sticky edge tolerance relative to data range\u003c/li\u003e\n\u003cli\u003eImprove formatting of image values in cases of singular norms\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWindows wheels now bundle the MSVC runtime DLL statically to avoid inconsistencies with other wheels and random crashes depending on import order.\u003c/p\u003e\n\u003ch2\u003eREL: 3.9.1\u003c/h2\u003e\n\u003cp\u003eThis is the first bugfix release of the 3.9.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains several bug-fixes and adjustments:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd GitHub artifact attestations for sdist and wheels\u003c/li\u003e\n\u003cli\u003eRe-add \u003ccode\u003ematplotlib.cm.get_cmap\u003c/code\u003e; note this function will still be removed at a later date\u003c/li\u003e\n\u003cli\u003eAllow duplicate backend entry points\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAxes\u003c/code\u003e autoscaling of thin bars at large locations\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAxes\u003c/code\u003e autoscaling with \u003ccode\u003eaxhspan\u003c/code\u003e / \u003ccode\u003eaxvspan\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAxes3D\u003c/code\u003e autoscaling of \u003ccode\u003eLine3DCollection\u003c/code\u003e / \u003ccode\u003ePoly3DCollection\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAxes3D\u003c/code\u003e mouse interactivity with non-default roll angle\u003c/li\u003e\n\u003cli\u003eFix box aspect ratios in \u003ccode\u003eAxes3D\u003c/code\u003e with alternate vertical axis\u003c/li\u003e\n\u003cli\u003eFix case handling of backends specified as \u003ccode\u003emodule://...\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix crash with TkAgg on Windows with \u003ccode\u003etk.window_focus: True\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix interactive update of SubFigures\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/69a98115f8bdaf0f3f615b062d3a380f01f017df\"\u003e\u003ccode\u003e69a9811\u003c/code\u003e\u003c/a\u003e REL: 3.9.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/beb28e9ae646896f772a46468c76a26007d87cf5\"\u003e\u003ccode\u003ebeb28e9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/29297\"\u003e#29297\u003c/a\u003e from QuLogic/auto-backport-of-pr-29295-on-v3.9.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/9d3cc1ec1c68943932059a15ff199bdd6d458fc0\"\u003e\u003ccode\u003e9d3cc1e\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/29295\"\u003e#29295\u003c/a\u003e: BLD: Pin meson-python to \u0026lt;0.17.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/57f7fdf74703eaeec77acdadc7ec655321f602f0\"\u003e\u003ccode\u003e57f7fdf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/29175\"\u003e#29175\u003c/a\u003e from vicliu2001/v3.9.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/3982428df4fed6cb0a6c6ee433e6b8a0d2933e7c\"\u003e\u003ccode\u003e3982428\u003c/code\u003e\u003c/a\u003e changed plot.show to plot.draw\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/6348165c649e8efb410582025534f73997661666\"\u003e\u003ccode\u003e6348165\u003c/code\u003e\u003c/a\u003e modified test for _generate_normals\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/1d7e71eafa2e9f22f605b0cd767165e38fb10a25\"\u003e\u003ccode\u003e1d7e71e\u003c/code\u003e\u003c/a\u003e DOC: Add Zenodo DOI for 3.9.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/4d1e3d247c3e6986f18623abfb7e9d4b6e4f46b2\"\u003e\u003ccode\u003e4d1e3d2\u003c/code\u003e\u003c/a\u003e BLD: bump branch away from tag\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/3ac0aea8be540028cb2510dabb43b290d15b503d\"\u003e\u003ccode\u003e3ac0aea\u003c/code\u003e\u003c/a\u003e REL: 3.9.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/3f7adbd87e281f211779870c38d6bb5da84edc46\"\u003e\u003ccode\u003e3f7adbd\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.9.2-doc' into v3.9.x\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.8.2...v3.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery` from 5.3.4 to 5.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/releases\"\u003ecelery's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.6.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix recursive WorkController instantiation in DjangoWorkerFixup + AttributeError when pool_cls is a string by \u003ca href=\"https://github.com/bruunotrindade\"\u003e\u003ccode\u003e@​bruunotrindade\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10045\"\u003ecelery/celery#10045\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBugfix: Revoked tasks now immediately update backend status to REVOKED by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9869\"\u003ecelery/celery#9869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.2 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10049\"\u003ecelery/celery#10049\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/bruunotrindade\"\u003e\u003ccode\u003e@​bruunotrindade\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10045\"\u003ecelery/celery#10045\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/celery/compare/v5.6.1...v5.6.2\"\u003ehttps://github.com/celery/celery/compare/v5.6.1...v5.6.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.6.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Redis Sentinel ACL authentication support by \u003ca href=\"https://github.com/anthonykuzmich7\"\u003e\u003ccode\u003e@​anthonykuzmich7\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10013\"\u003ecelery/celery#10013\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Broker heartbeats not sent during graceful shutdown by \u003ca href=\"https://github.com/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9986\"\u003ecelery/celery#9986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs \u003ca href=\"https://redirect.github.com/celery/celery/issues/5410\"\u003e#5410\u003c/a\u003e -- Document confirm_publish broker transport option by \u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10016\"\u003ecelery/celery#10016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eclose DB pools only in prefork mode by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10020\"\u003ecelery/celery#10020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Avoid unnecessary Django database connection creation during cleanup by \u003ca href=\"https://github.com/snopoke\"\u003e\u003ccode\u003e@​snopoke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10015\"\u003ecelery/celery#10015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ereliable prefork detection by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10023\"\u003ecelery/celery#10023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebetter coverage by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10029\"\u003ecelery/celery#10029\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: clarify \u003ccode\u003eresult_extended\u003c/code\u003e vs periodic task metadata and show \u003ccode\u003eheaders[\u0026quot;periodic_task_name\u0026quot;]\u003c/code\u003e example by \u003ca href=\"https://github.com/SpaceShaman\"\u003e\u003ccode\u003e@​SpaceShaman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10030\"\u003ecelery/celery#10030\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop importing pytest_subtests by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10032\"\u003ecelery/celery#10032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly use exceptiongroup backport for Python \u0026lt; 3.11 by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10033\"\u003ecelery/celery#10033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.1 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10037\"\u003ecelery/celery#10037\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/anthonykuzmich7\"\u003e\u003ccode\u003e@​anthonykuzmich7\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10013\"\u003ecelery/celery#10013\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9986\"\u003ecelery/celery#9986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10016\"\u003ecelery/celery#10016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snopoke\"\u003e\u003ccode\u003e@​snopoke\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10015\"\u003ecelery/celery#10015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SpaceShaman\"\u003e\u003ccode\u003e@​SpaceShaman\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10030\"\u003ecelery/celery#10030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/celery/compare/v5.6.0...v5.6.1\"\u003ehttps://github.com/celery/celery/compare/v5.6.0...v5.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.6.0\u003c/h2\u003e\n\u003cp\u003eCelery v5.6.0 is now available.\u003c/p\u003e\n\u003ch2\u003eKey Highlights\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://docs.celeryq.dev/en/stable/history/whatsnew-5.6.html\"\u003eWhat's new in Celery 5.6\u003c/a\u003e for a complete overview or read the main highlights below.\u003c/p\u003e\n\u003ch3\u003ePython 3.9 Minimum Version\u003c/h3\u003e\n\u003cp\u003eCelery 5.6.0 drops support for Python 3.8 (EOL). The minimum required Python version is now 3.9. Users still on Python 3.8 must upgrade their Python version before upgrading to Celery 5.6.0.\u003c/p\u003e\n\u003cp\u003eAdditionally, this release includes initial support for Python 3.14.\u003c/p\u003e\n\u003ch3\u003eSQS: Reverted to \u003ccode\u003epycurl\u003c/code\u003e from \u003ccode\u003eurllib3\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe switch from \u003ccode\u003epycurl\u003c/code\u003e to \u003ccode\u003eurllib3\u003c/code\u003e for the SQS transport (introduced in Celery 5.5.0 via Kombu) has been reverted due to critical issues affecting SQS users.\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/celery/celery/blob/main/Changelog.rst\"\u003ecelery's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.6.2\u003c/h1\u003e\n\u003cp\u003e:release-date: 2026-01-04\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Fix recursive WorkController instantiation in DjangoWorkerFixup + AttributeError when pool_cls is a string ([#10045](https://github.com/celery/celery/issues/10045))\n- Bugfix: Revoked tasks now immediately update backend status to REVOKED ([#9869](https://github.com/celery/celery/issues/9869))\n- Prepare for release: v5.6.2 ([#10049](https://github.com/celery/celery/issues/10049))\n\u003cp\u003e.. _version-5.6.1:\u003c/p\u003e\n\u003ch1\u003e5.6.1\u003c/h1\u003e\n\u003cp\u003e:release-date: 2025-12-29\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Redis Sentinel ACL authentication support (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10013\"\u003e#10013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: Broker heartbeats not sent during graceful shutdown (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9986\"\u003e#9986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs \u003ca href=\"https://redirect.github.com/celery/celery/issues/5410\"\u003e#5410\u003c/a\u003e -- Document confirm_publish broker transport option (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eclose DB pools only in prefork mode (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10020\"\u003e#10020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: Avoid unnecessary Django database connection creation during cleanup (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereliable prefork detection (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10023\"\u003e#10023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebetter coverage (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10029\"\u003e#10029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocs: clarify \u003ccode\u003eresult_extended\u003c/code\u003e vs periodic task metadata and show \u003ccode\u003eheaders[\u0026quot;periodic_task_name\u0026quot;]\u003c/code\u003e example (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10030\"\u003e#10030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStop importing pytest_subtests (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10032\"\u003e#10032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOnly use exceptiongroup backport for Python \u0026lt; 3.11 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10033\"\u003e#10033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.1 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10037\"\u003e#10037\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _version-5.6.0:\u003c/p\u003e\n\u003ch1\u003e5.6.0\u003c/h1\u003e\n\u003cp\u003e:release-date: 2025-11-30\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eCelery v5.6.0 is now available.\u003c/p\u003e\n\u003cp\u003eKey Highlights\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nSee :ref:`whatsnew-5.6` for a complete overview or read the main highlights below.\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/6a43c846f183ef0cbade24f4b9a8f7a6ea113b44\"\u003e\u003ccode\u003e6a43c84\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.2 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10049\"\u003e#10049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/333a82f746734151c5cbe848916085455b0a3748\"\u003e\u003ccode\u003e333a82f\u003c/code\u003e\u003c/a\u003e Bugfix: Revoked tasks now immediately update backend status to REVOKED (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9869\"\u003e#9869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/9d6ab110d947270c4edf0b42454266d2954e653d\"\u003e\u003ccode\u003e9d6ab11\u003c/code\u003e\u003c/a\u003e Fix recursive WorkController instantiation in DjangoWorkerFixup + AttributeEr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/21dbc73f81d2fae058de49e665afaa1cd92da5c0\"\u003e\u003ccode\u003e21dbc73\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.1 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10037\"\u003e#10037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/ba20bed7723c684d12ddd62d6a7c0c0d901b3351\"\u003e\u003ccode\u003eba20bed\u003c/code\u003e\u003c/a\u003e Only use exceptiongroup backport for Python \u0026lt; 3.11 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10033\"\u003e#10033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/21675299bc2d10c648448ec5221136e07c1eec1a\"\u003e\u003ccode\u003e2167529\u003c/code\u003e\u003c/a\u003e Stop importing pytest_subtests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/0527296acb1f1790788301d4395ba6d5ce2a9704\"\u003e\u003ccode\u003e0527296\u003c/code\u003e\u003c/a\u003e Bump google-cloud-firestore from 2.21.0 to 2.22.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/5f8659bdba4561796d66e938a1e2c71d4489562f\"\u003e\u003ccode\u003e5f8659b\u003c/code\u003e\u003c/a\u003e Clarify 'result_extended' setting usage in tasks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/f19db7008682c782d85e69b5ce736970491752ea\"\u003e\u003ccode\u003ef19db70\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.19.0 to 1.19.1 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10028\"\u003e#10028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/6da72bde60553a1c350eef1e17d834d004ed099d\"\u003e\u003ccode\u003e6da72bd\u003c/code\u003e\u003c/a\u003e better coverage (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10029\"\u003e#10029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/celery/celery/compare/v5.3.4...v5.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scipy` from 1.11.4 to 1.13.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scipy/scipy/releases\"\u003escipy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSciPy 1.13.1 Release Notes\u003c/h1\u003e\n\u003cp\u003eSciPy \u003ccode\u003e1.13.1\u003c/code\u003e is a bug-fix release with no new features\ncompared to \u003ccode\u003e1.13.0\u003c/code\u003e. The version of OpenBLAS shipped with\nthe PyPI binaries has been increased to \u003ccode\u003e0.3.27\u003c/code\u003e.\u003c/p\u003e\n\u003ch1\u003eAuthors\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eName (commits)\u003c/li\u003e\n\u003cli\u003eh-vetinari (1)\u003c/li\u003e\n\u003cli\u003eJake Bowhay (2)\u003c/li\u003e\n\u003cli\u003eEvgeni Burovski (6)\u003c/li\u003e\n\u003cli\u003eSean Cheah (2)\u003c/li\u003e\n\u003cli\u003eLucas Colley (2)\u003c/li\u003e\n\u003cli\u003eDWesl (2)\u003c/li\u003e\n\u003cli\u003eRalf Gommers (7)\u003c/li\u003e\n\u003cli\u003eBen Greiner (1) +\u003c/li\u003e\n\u003cli\u003eMatt Haberland (2)\u003c/li\u003e\n\u003cli\u003eGregory R. Lee (1)\u003c/li\u003e\n\u003cli\u003ePhilip Loche (1) +\u003c/li\u003e\n\u003cli\u003eSijo Valayakkad Manikandan (1) +\u003c/li\u003e\n\u003cli\u003eMatti Picus (1)\u003c/li\u003e\n\u003cli\u003eTyler Reddy (62)\u003c/li\u003e\n\u003cli\u003eAtsushi Sakai (1)\u003c/li\u003e\n\u003cli\u003eDaniel Schmitz (2)\u003c/li\u003e\n\u003cli\u003eDan Schult (3)\u003c/li\u003e\n\u003cli\u003eScott Shambaugh (2)\u003c/li\u003e\n\u003cli\u003eEdgar Andrés Margffoy Tuay (1)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eA total of 19 people contributed to this release.\nPeople with a \u0026quot;+\u0026quot; by their names contributed a patch for the first time.\nThis list of names is automatically generated, and may not be fully complete.\u003c/p\u003e\n\u003ch1\u003eSciPy 1.13.0 Release Notes\u003c/h1\u003e\n\u003cp\u003eSciPy \u003ccode\u003e1.13.0\u003c/code\u003e is the culmination of 3 months of hard work. This\nout-of-band release aims to support NumPy \u003ccode\u003e2.0.0\u003c/code\u003e, and is backwards\ncompatible to NumPy \u003ccode\u003e1.22.4\u003c/code\u003e. The version of OpenBLAS used to build\nthe PyPI wheels has been increased to \u003ccode\u003e0.3.26.dev\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis release requires Python 3.9+ and NumPy 1.22.4 or greater.\u003c/p\u003e\n\u003cp\u003eFor running on PyPy, PyPy3 6.0+ is required.\u003c/p\u003e\n\u003ch1\u003eHighlights of this release\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/44e4ebaac992fde33f04638b99629d23973cb9b2\"\u003e\u003ccode\u003e44e4eba\u003c/code\u003e\u003c/a\u003e REL: SciPy 1.13.1 release commit [wheel build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/2eb8e1b7380da0fada12ffd8d2c41f62dc74cb2e\"\u003e\u003ccode\u003e2eb8e1b\u003c/code\u003e\u003c/a\u003e Merge pull requ...\n\n_Description has been truncated_","html_url":"https://github.com/ChunkyTortoise/EnterpriseHub/pull/22","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChunkyTortoise%2FEnterpriseHub/issues/22","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/22/packages"}},{"old_version":"1.8.0","new_version":"1.9.0","update_type":"minor","path":null,"pr_created_at":"2026-01-19T09:03:08.000Z","version_change":"1.8.0 → 1.9.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":"1.8.0","new_version":"1.9.0","update_type":"minor","path":null,"pr_created_at":"2026-01-19T01:08:56.000Z","version_change":"1.8.0 → 1.9.0","issue":{"uuid":"3827610593","node_id":"PR_kwDOO7JJJ8695mVs","number":54,"state":"open","title":"build(deps): bump the python group across 1 directory with 60 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-19T01:08:56.000Z","updated_at":"2026-02-02T01:11:45.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":60,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.0","repository_url":"https://github.com/django/asgiref"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.47.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.16.2","repository_url":"https://github.com/pypa/hatch"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.28.0","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-context","old_version":"6.0.1","new_version":"6.1.0","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.4.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"keyring","old_version":"25.6.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pyasn1","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.2.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.5","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.14.0","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.26","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.36.1","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.40.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.14.0"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"django-compressor","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/django-compressor/django-compressor"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.3.2"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.5"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.8"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.13","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.13.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 60 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.1` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.3` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.47.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.16.2` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.28.0` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.1` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.0.1` | `6.1.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.4.0` |\n| [keyring](https://github.com/jaraco/keyring) | `25.6.0` | `25.7.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.1` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.1` | `0.6.2` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.2.0` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.5` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.14.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.3` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.26` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.36.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.2` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.40.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.14.0` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [django-compressor](https://github.com/django-compressor/django-compressor) | `4.5.1` | `4.6.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.3.2` |\n| [werkzeug[watchdog]](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.5` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.8` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.13` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.13.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.5.1` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.12.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.12.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChanged all functions currently raising the private \u003ccode\u003eNoCurrentAsyncBackend\u003c/code\u003e exception (since v4.12.0) to instead raise the public \u003ccode\u003eNoEventLoopError\u003c/code\u003e exception (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1048\"\u003e#1048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e not working with instance methods (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1042\"\u003e#1042\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.12.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for asyncio's \u003ca href=\"https://docs.python.org/3/library/asyncio-graph.html\"\u003etask call graphs\u003c/a\u003e on Python 3.14 and later when using AnyIO's task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1025\"\u003e#1025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded an asynchronous implementation of the \u003ccode\u003efunctools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1001\"\u003e#1001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ewinloop\u003c/a\u003e implementation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/960\"\u003e#960\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for use as a context manager to \u003ccode\u003eanyio.lowlevel.RunVar\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1003\"\u003e#1003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e__all__\u003c/code\u003e declarations to public submodules (\u003ccode\u003eanyio.lowlevel\u003c/code\u003e etc.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1009\"\u003e#1009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to set the token count of a \u003ccode\u003eCapacityLimiter\u003c/code\u003e to zero (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1019\"\u003e#1019\u003c/a\u003e; requires Python 3.10 or later when using Trio)\u003c/li\u003e\n\u003cli\u003eAdded parameters \u003ccode\u003ecase_sensitive\u003c/code\u003e and \u003ccode\u003erecurse_symlinks\u003c/code\u003e along with support for path-like objects to \u003ccode\u003eanyio.Path.glob()\u003c/code\u003e and \u003ccode\u003eanyio.Path.rglob()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1033\"\u003e#1033\u003c/a\u003e; PR by \u003ca href=\"https://github.com/northisup\"\u003e\u003ccode\u003e@​northisup\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped \u003ccode\u003esniffio\u003c/code\u003e as a direct dependency and added the \u003ccode\u003eget_available_backends()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1021\"\u003e#1021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not raising \u003ccode\u003eClosedResourceError\u003c/code\u003e and \u003ccode\u003eBrokenResourceError\u003c/code\u003e on asyncio. Previously, a non-AnyIO exception was raised in such cases (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not checkpointing before writing data on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1002\"\u003e#1002\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a race condition where cancelling a \u003ccode\u003eFuture\u003c/code\u003e from \u003ccode\u003eBlockingPortal.start_task_soon()\u003c/code\u003e would sometimes not cancel the async function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1011\"\u003e#1011\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the presence of the pytest plugin causing breakage with older versions of pytest (\u0026lt;= 6.1.2) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1028\"\u003e#1028\u003c/a\u003e; PR by \u003ca href=\"https://github.com/saper\"\u003e\u003ccode\u003e@​saper\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a rarely occurring \u003ccode\u003eRuntimeError: Set changed size during iteration\u003c/code\u003e while shutting down the process pool when using the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/a0dccbd78d75886247ae7846b460fd390cc94fbd\"\u003e\u003ccode\u003ea0dccbd\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/e1121a735c977c00c18b3a581d28daf83a279833\"\u003e\u003ccode\u003ee1121a7\u003c/code\u003e\u003c/a\u003e Enabled tests for the 4.12.x branch\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/69ab43e549517ce554f84365fed9da90e806c303\"\u003e\u003ccode\u003e69ab43e\u003c/code\u003e\u003c/a\u003e Fixed \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e not working with methods (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/4f4b33ed56edd1bc4785a368a103ad8138730d91\"\u003e\u003ccode\u003e4f4b33e\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003eBlockingPortal.__new__\u003c/code\u003e hack (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1053\"\u003e#1053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/af17d89b80ebbd526215e2dbd025b284730aaa3f\"\u003e\u003ccode\u003eaf17d89\u003c/code\u003e\u003c/a\u003e Replaced the NoCurrentAsyncBackend exception with NoEventLoopError (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/4310264312a2e86e792481bdb05bdb381678a6b5\"\u003e\u003ccode\u003e4310264\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0cc6723ba5a2fdaa98a24852d3681c4ed99b8863\"\u003e\u003ccode\u003e0cc6723\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/bc021b634291223d6829c0a689152173443a8545\"\u003e\u003ccode\u003ebc021b6\u003c/code\u003e\u003c/a\u003e Fixed the download-artifact settings to retain the expected behavior\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/c6000aa2837f75733f3c09c454f5a31eb9f9f536\"\u003e\u003ccode\u003ec6000aa\u003c/code\u003e\u003c/a\u003e Corrected the format of the version in the changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9d1bfe0da4261bcef3c10cd31218237805a89937\"\u003e\u003ccode\u003e9d1bfe0\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.12.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\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/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.8.1 to 3.11.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/asgiref/blob/main/CHANGELOG.txt\"\u003easgiref's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.0 (2025-11-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esync_to_async\u003c/code\u003e gains a \u003ccode\u003econtext\u003c/code\u003e parameter, similar to those for\n\u003ccode\u003easyncio.create_task\u003c/code\u003e, \u003ccode\u003eTaskGroup\u003c/code\u003e \u0026amp;co, that can be used on Python 3.11+ to\ncontrol the context used by the underlying task.\u003c/p\u003e\n\u003cp\u003eThe parent context is already propagated by default but the additional\ncontrol is useful if multiple \u003ccode\u003esync_to_async\u003c/code\u003e calls need to share the same\ncontext, e.g. when used with \u003ccode\u003easyncio.gather()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.10.0 (2025-10-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded AsyncSingleThreadContext context manager to ensure multiple AsyncToSync\ninvocations use the same thread. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.2 (2025-09-23)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes wsgi.errors file descriptor in WsgiToAsgi adapter.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b7b15b20ddb51d1d8b6978165c0986686cd08c1d\"\u003e\u003ccode\u003eb7b15b2\u003c/code\u003e\u003c/a\u003e Releasing 3.11.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/901ee4f96db156f0b462690dd7c9f5aa99bcce03\"\u003e\u003ccode\u003e901ee4f\u003c/code\u003e\u003c/a\u003e Added a custom context parameter for the sync_to_async (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2138f0317d79cedd065571447ae0a7571989550e\"\u003e\u003ccode\u003e2138f03\u003c/code\u003e\u003c/a\u003e Fixed typo in test file comment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f587b122af17bdba5749c30b96d2237bc1c2dfdf\"\u003e\u003ccode\u003ef587b12\u003c/code\u003e\u003c/a\u003e Releasing 3.10.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b08087c3b6df811a0524585c4d4dafdc6b12c222\"\u003e\u003ccode\u003eb08087c\u003c/code\u003e\u003c/a\u003e Added AsyncSingleThreadContext (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/3471a0c09bd043d61c299308c0c8519ab6c0f774\"\u003e\u003ccode\u003e3471a0c\u003c/code\u003e\u003c/a\u003e Releasing 3.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/4f892bd261cee9afe51d67333e9bc7cd98b39a35\"\u003e\u003ccode\u003e4f892bd\u003c/code\u003e\u003c/a\u003e Remove Python 3.8 from tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/83cd6f3c6f59a66999446c2893cdb3fcae3c03c5\"\u003e\u003ccode\u003e83cd6f3\u003c/code\u003e\u003c/a\u003e Run CI against Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/796b9f14fd92d3131c7c39fab308ddd986d271eb\"\u003e\u003ccode\u003e796b9f1\u003c/code\u003e\u003c/a\u003e Fix incorrect Trailer header (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/29b108b0a9a5eddae3e282ba33915412a855e529\"\u003e\u003ccode\u003e29b108b\u003c/code\u003e\u003c/a\u003e Fixed \u003ca href=\"https://redirect.github.com/django/asgiref/issues/529\"\u003e#529\u003c/a\u003e: wsgi.errors should be a StringIO (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.11.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.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 `click` from 8.1.8 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\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\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/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\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 \u003ccode\u003eCliRunner\u003c/code\u003e. :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.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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.1.8...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu 24.04 for testing in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9677\"\u003e#9677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate test matrix to use Django 5.2 stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epyupgrade\u003c/code\u003e to \u003ccode\u003epre-commit\u003c/code\u003e hooks in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix test with Django 5 when \u003ccode\u003epytz\u003c/code\u003e is available in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9715\"\u003e#9715\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/araggohnxd\"\u003e\u003ccode\u003e@​araggohnxd\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mbeijen\"\u003e\u003ccode\u003e@​mbeijen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ren000thomas\"\u003e\u003ccode\u003e@​ren000thomas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\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/encode/django-rest-framework/commit/de018df2aaacb1d2d947c0cfbfaa6d08fb50557d\"\u003e\u003ccode\u003ede018df\u003c/code\u003e\u003c/a\u003e Prepare 3.16.1 release (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9752\"\u003e#9752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/a7d050f5b3388ed9dc69c7770fdbd9654d4639ae\"\u003e\u003ccode\u003ea7d050f\u003c/code\u003e\u003c/a\u003e Turkish Translation updates (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9749\"\u003e#9749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/853969c69c815be69513c2f63a41285858a45352\"\u003e\u003ccode\u003e853969c\u003c/code\u003e\u003c/a\u003e Fix test with Django 5 when pytz is available (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9715\"\u003e#9715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/2ae8c117dae5d7912760492a1df397e2fcd8c7a4\"\u003e\u003ccode\u003e2ae8c11\u003c/code\u003e\u003c/a\u003e Add note to tutorial about required request in serializer context when using ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/70e54f45add6a96f92bbadbcff30fc211f2ce0c3\"\u003e\u003ccode\u003e70e54f4\u003c/code\u003e\u003c/a\u003e Revert docs back to djangorestframework-guardian (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9734\"\u003e#9734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30384947053b1f2b2c9e82cafd1da934d3442a61\"\u003e\u003ccode\u003e3038494\u003c/code\u003e\u003c/a\u003e Document that unique constraints cause \u003ccode\u003erequired=True\u003c/code\u003e in ModelSerializer (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9\"\u003e#9\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enco...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/54","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/54","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/54/packages"}},{"old_version":"1.8.0","new_version":"1.9.0","update_type":"minor","path":null,"pr_created_at":"2026-01-12T06:52:02.000Z","version_change":"1.8.0 → 1.9.0","issue":{"uuid":"3802998815","node_id":"PR_kwDOGujB-868oZJ5","number":182,"state":"open","title":"deps-dev(deps-dev): bump websocket-client from 1.8.0 to 1.9.0","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:52:02.000Z","updated_at":"2026-01-12T06:52:03.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps-dev(deps-dev)","packages":[{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":null,"ecosystem":"pip"},"body":"Bumps [websocket-client](https://github.com/websocket-client/websocket-client) from 1.8.0 to 1.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e1.9.0\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6861ee417b65c183a81671bc57cace26c9c7ee29\"\u003e\u003ccode\u003e6861ee4\u003c/code\u003e\u003c/a\u003e Use ipaddress module for no_proxy parsing (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/729bdb8fc063397d298261ed6f2288f272b7f6de\"\u003e\u003ccode\u003e729bdb8\u003c/code\u003e\u003c/a\u003e Coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/f22579afed961d89a306d0018f373922bf567d22\"\u003e\u003ccode\u003ef22579a\u003c/code\u003e\u003c/a\u003e Linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/9564030bed1112497bf1c879673870419365a064\"\u003e\u003ccode\u003e9564030\u003c/code\u003e\u003c/a\u003e Change echo URL in docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/c0fe0f7a18867599c9b62fc61f71036a8d5bdfcf\"\u003e\u003ccode\u003ec0fe0f7\u003c/code\u003e\u003c/a\u003e apply black formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/813d570fc95114aa48e8ddf8b767390a1a6985f7\"\u003e\u003ccode\u003e813d570\u003c/code\u003e\u003c/a\u003e Resolve all mypy errors, with AI assistance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6020f37e784b77f6627b38797595f038aa76f26e\"\u003e\u003ccode\u003e6020f37\u003c/code\u003e\u003c/a\u003e black formatting fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.8.0...v1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=websocket-client\u0026package-manager=pip\u0026previous-version=1.8.0\u0026new-version=1.9.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/TensorAeroSpace/TensorAeroSpace/pull/182","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/TensorAeroSpace%2FTensorAeroSpace/issues/182","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/182/packages"}},{"old_version":"1.8.0","new_version":"1.9.0","update_type":"minor","path":null,"pr_created_at":"2026-01-05T00:24:42.000Z","version_change":"1.8.0 → 1.9.0","issue":{"uuid":"3779809235","node_id":"PR_kwDOO7JJJ867ctOq","number":52,"state":"closed","title":"build(deps): bump the python group across 1 directory with 60 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-13T04:41:36.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-05T00:24:42.000Z","updated_at":"2026-01-13T04:41:37.000Z","time_to_close":706614,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":60,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.0","repository_url":"https://github.com/django/asgiref"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.2","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.45.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.16.2","repository_url":"https://github.com/pypa/hatch"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.28.0","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-context","old_version":"6.0.1","new_version":"6.0.2","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.4.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"keyring","old_version":"25.6.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.2.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.5","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.12.1.14","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.21","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.4","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.40.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.13.1"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"django-compressor","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/django-compressor/django-compressor"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.3.2"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.8"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.13.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 60 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.0` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.2` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.45.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.16.2` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.28.0` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.1` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.0.1` | `6.0.2` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.4.0` |\n| [keyring](https://github.com/jaraco/keyring) | `25.6.0` | `25.7.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.1` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.2.0` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.5` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.12.1.14` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.2` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.21` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.4` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.2` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.40.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.13.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [django-compressor](https://github.com/django-compressor/django-compressor) | `4.5.1` | `4.6.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.3.2` |\n| [werkzeug[watchdog]](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.8` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.10` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.13.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.5.1` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.12.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.12.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for asyncio's \u003ca href=\"https://docs.python.org/3/library/asyncio-graph.html\"\u003etask call graphs\u003c/a\u003e on Python 3.14 and later when using AnyIO's task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1025\"\u003e#1025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded an asynchronous implementation of the \u003ccode\u003efunctools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1001\"\u003e#1001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ewinloop\u003c/a\u003e implementation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/960\"\u003e#960\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for use as a context manager to \u003ccode\u003eanyio.lowlevel.RunVar\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1003\"\u003e#1003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e__all__\u003c/code\u003e declarations to public submodules (\u003ccode\u003eanyio.lowlevel\u003c/code\u003e etc.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1009\"\u003e#1009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to set the token count of a \u003ccode\u003eCapacityLimiter\u003c/code\u003e to zero (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1019\"\u003e#1019\u003c/a\u003e; requires Python 3.10 or later when using Trio)\u003c/li\u003e\n\u003cli\u003eAdded parameters \u003ccode\u003ecase_sensitive\u003c/code\u003e and \u003ccode\u003erecurse_symlinks\u003c/code\u003e along with support for path-like objects to \u003ccode\u003eanyio.Path.glob()\u003c/code\u003e and \u003ccode\u003eanyio.Path.rglob()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1033\"\u003e#1033\u003c/a\u003e; PR by \u003ca href=\"https://github.com/northisup\"\u003e\u003ccode\u003e@​northisup\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped \u003ccode\u003esniffio\u003c/code\u003e as a direct dependency and added the \u003ccode\u003eget_available_backends()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1021\"\u003e#1021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not raising \u003ccode\u003eClosedResourceError\u003c/code\u003e and \u003ccode\u003eBrokenResourceError\u003c/code\u003e on asyncio. Previously, a non-AnyIO exception was raised in such cases (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not checkpointing before writing data on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1002\"\u003e#1002\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a race condition where cancelling a \u003ccode\u003eFuture\u003c/code\u003e from \u003ccode\u003eBlockingPortal.start_task_soon()\u003c/code\u003e would sometimes not cancel the async function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1011\"\u003e#1011\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the presence of the pytest plugin causing breakage with older versions of pytest (\u0026lt;= 6.1.2) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1028\"\u003e#1028\u003c/a\u003e; PR by \u003ca href=\"https://github.com/saper\"\u003e\u003ccode\u003e@​saper\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a rarely occurring \u003ccode\u003eRuntimeError: Set changed size during iteration\u003c/code\u003e while shutting down the process pool when using the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/bc021b634291223d6829c0a689152173443a8545\"\u003e\u003ccode\u003ebc021b6\u003c/code\u003e\u003c/a\u003e Fixed the download-artifact settings to retain the expected behavior\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/c6000aa2837f75733f3c09c454f5a31eb9f9f536\"\u003e\u003ccode\u003ec6000aa\u003c/code\u003e\u003c/a\u003e Corrected the format of the version in the changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9d1bfe0da4261bcef3c10cd31218237805a89937\"\u003e\u003ccode\u003e9d1bfe0\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/77f7ce25e12c9becf5081105a47b1914e50a3e0a\"\u003e\u003ccode\u003e77f7ce2\u003c/code\u003e\u003c/a\u003e Fixed RuntimeError while shutting down the asyncio process pool (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aecc666e6b3b40f977ee715d141bdd89711b45cb\"\u003e\u003ccode\u003eaecc666\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/e5569adf98394dfabebccf215a04d05d7819b506\"\u003e\u003ccode\u003ee5569ad\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/dde3ab8583cb194e663f6fb87703a4a79e2701eb\"\u003e\u003ccode\u003edde3ab8\u003c/code\u003e\u003c/a\u003e Moved a changelog entry to its correct position\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/250d4f183245bf7ee5ead0ff39d521cda2b8d617\"\u003e\u003ccode\u003e250d4f1\u003c/code\u003e\u003c/a\u003e Restore compatibility with pytest\u0026lt;=6.1.2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3708e227838e2f51464900cf806b25c30ca458a7\"\u003e\u003ccode\u003e3708e22\u003c/code\u003e\u003c/a\u003e Fixed a typo in the documentation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9adbe08c55e725b0388dcc4ab7556875da881a4c\"\u003e\u003ccode\u003e9adbe08\u003c/code\u003e\u003c/a\u003e Add new params to Path.glob \u0026amp; Path.rglob introduced since 3.12 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\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/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.8.1 to 3.11.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/asgiref/blob/main/CHANGELOG.txt\"\u003easgiref's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.0 (2025-11-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esync_to_async\u003c/code\u003e gains a \u003ccode\u003econtext\u003c/code\u003e parameter, similar to those for\n\u003ccode\u003easyncio.create_task\u003c/code\u003e, \u003ccode\u003eTaskGroup\u003c/code\u003e \u0026amp;co, that can be used on Python 3.11+ to\ncontrol the context used by the underlying task.\u003c/p\u003e\n\u003cp\u003eThe parent context is already propagated by default but the additional\ncontrol is useful if multiple \u003ccode\u003esync_to_async\u003c/code\u003e calls need to share the same\ncontext, e.g. when used with \u003ccode\u003easyncio.gather()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.10.0 (2025-10-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded AsyncSingleThreadContext context manager to ensure multiple AsyncToSync\ninvocations use the same thread. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.2 (2025-09-23)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes wsgi.errors file descriptor in WsgiToAsgi adapter.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b7b15b20ddb51d1d8b6978165c0986686cd08c1d\"\u003e\u003ccode\u003eb7b15b2\u003c/code\u003e\u003c/a\u003e Releasing 3.11.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/901ee4f96db156f0b462690dd7c9f5aa99bcce03\"\u003e\u003ccode\u003e901ee4f\u003c/code\u003e\u003c/a\u003e Added a custom context parameter for the sync_to_async (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2138f0317d79cedd065571447ae0a7571989550e\"\u003e\u003ccode\u003e2138f03\u003c/code\u003e\u003c/a\u003e Fixed typo in test file comment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f587b122af17bdba5749c30b96d2237bc1c2dfdf\"\u003e\u003ccode\u003ef587b12\u003c/code\u003e\u003c/a\u003e Releasing 3.10.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b08087c3b6df811a0524585c4d4dafdc6b12c222\"\u003e\u003ccode\u003eb08087c\u003c/code\u003e\u003c/a\u003e Added AsyncSingleThreadContext (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/3471a0c09bd043d61c299308c0c8519ab6c0f774\"\u003e\u003ccode\u003e3471a0c\u003c/code\u003e\u003c/a\u003e Releasing 3.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/4f892bd261cee9afe51d67333e9bc7cd98b39a35\"\u003e\u003ccode\u003e4f892bd\u003c/code\u003e\u003c/a\u003e Remove Python 3.8 from tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/83cd6f3c6f59a66999446c2893cdb3fcae3c03c5\"\u003e\u003ccode\u003e83cd6f3\u003c/code\u003e\u003c/a\u003e Run CI against Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/796b9f14fd92d3131c7c39fab308ddd986d271eb\"\u003e\u003ccode\u003e796b9f1\u003c/code\u003e\u003c/a\u003e Fix incorrect Trailer header (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/29b108b0a9a5eddae3e282ba33915412a855e529\"\u003e\u003ccode\u003e29b108b\u003c/code\u003e\u003c/a\u003e Fixed \u003ca href=\"https://redirect.github.com/django/asgiref/issues/529\"\u003e#529\u003c/a\u003e: wsgi.errors should be a StringIO (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.11.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.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 `click` from 8.1.8 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\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\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/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\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 \u003ccode\u003eCliRunner\u003c/code\u003e. :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.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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.1.8...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu 24.04 for testing in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9677\"\u003e#9677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate test matrix to use Django 5.2 stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epyupgrade\u003c/code\u003e to \u003ccode\u003epre-commit\u003c/code\u003e hooks in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix test with Django 5 when \u003ccode\u003epytz\u003c/code\u003e is available in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9715\"\u003e#9715\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/araggohnxd\"\u003e\u003ccode\u003e@​araggohnxd\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mbeijen\"\u003e\u003ccode\u003e@​mbeijen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ren000thomas\"\u003e\u003ccode\u003e@​ren000thomas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\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/encode/django-rest-framework/commit/de018df2aaacb1d2d947c0cfbfaa6d08fb50557d\"\u003e\u003ccode\u003ede018df\u003c/code\u003e\u003c/a\u003e Prepare 3.16.1 release (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9752\"\u003e#9752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/a7d050f5b3388ed9dc69c7770fdbd9654d4639ae\"\u003e\u003ccode\u003ea7d050f\u003c/code\u003e\u003c/a\u003e Turkish Translation updates (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9749\"\u003e#9749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/853969c69c815be69513c2f63a41285858a45352\"\u003e\u003ccode\u003e853969c\u003c/code\u003e\u003c/a\u003e Fix test with Django 5 when pytz is available (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9715\"\u003e#9715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/2ae8c117dae5d7912760492a1df397e2fcd8c7a...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/52","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/52","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/52/packages"}},{"old_version":"1.8.0","new_version":"1.9.0","update_type":"minor","path":null,"pr_created_at":"2025-12-25T00:21:31.000Z","version_change":"1.8.0 → 1.9.0","issue":{"uuid":"3761179744","node_id":"PR_kwDOO7JJJ866hgPU","number":51,"state":"closed","title":"build(deps): bump the python group across 1 directory with 61 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-05T00:21:18.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-25T00:21:31.000Z","updated_at":"2026-01-05T00:21:19.000Z","time_to_close":950387,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":61,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.0","repository_url":"https://github.com/django/asgiref"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.45.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.16.2","repository_url":"https://github.com/pypa/hatch"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.28.0","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-context","old_version":"6.0.1","new_version":"6.0.2","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.4.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"keyring","old_version":"25.6.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.2.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.5","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.12.1.14","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.18","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.4","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.0","repository_url":"https://github.com/celery/celery"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.40.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.13.1"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"django-compressor","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/django-compressor/django-compressor"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.3.2"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.8"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.13.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 61 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.0` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.1` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.45.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.16.2` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.28.0` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.1` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.0.1` | `6.0.2` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.4.0` |\n| [keyring](https://github.com/jaraco/keyring) | `25.6.0` | `25.7.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.1` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.2.0` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.5` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.12.1.14` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.2` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.18` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.4` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.40.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.13.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [django-compressor](https://github.com/django-compressor/django-compressor) | `4.5.1` | `4.6.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.3.2` |\n| [werkzeug[watchdog]](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.8` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.10` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.13.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.5.1` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.12.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.12.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for asyncio's \u003ca href=\"https://docs.python.org/3/library/asyncio-graph.html\"\u003etask call graphs\u003c/a\u003e on Python 3.14 and later when using AnyIO's task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1025\"\u003e#1025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded an asynchronous implementation of the \u003ccode\u003efunctools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1001\"\u003e#1001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ewinloop\u003c/a\u003e implementation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/960\"\u003e#960\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for use as a context manager to \u003ccode\u003eanyio.lowlevel.RunVar\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1003\"\u003e#1003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e__all__\u003c/code\u003e declarations to public submodules (\u003ccode\u003eanyio.lowlevel\u003c/code\u003e etc.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1009\"\u003e#1009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to set the token count of a \u003ccode\u003eCapacityLimiter\u003c/code\u003e to zero (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1019\"\u003e#1019\u003c/a\u003e; requires Python 3.10 or later when using Trio)\u003c/li\u003e\n\u003cli\u003eAdded parameters \u003ccode\u003ecase_sensitive\u003c/code\u003e and \u003ccode\u003erecurse_symlinks\u003c/code\u003e along with support for path-like objects to \u003ccode\u003eanyio.Path.glob()\u003c/code\u003e and \u003ccode\u003eanyio.Path.rglob()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1033\"\u003e#1033\u003c/a\u003e; PR by \u003ca href=\"https://github.com/northisup\"\u003e\u003ccode\u003e@​northisup\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped \u003ccode\u003esniffio\u003c/code\u003e as a direct dependency and added the \u003ccode\u003eget_available_backends()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1021\"\u003e#1021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not raising \u003ccode\u003eClosedResourceError\u003c/code\u003e and \u003ccode\u003eBrokenResourceError\u003c/code\u003e on asyncio. Previously, a non-AnyIO exception was raised in such cases (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not checkpointing before writing data on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1002\"\u003e#1002\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a race condition where cancelling a \u003ccode\u003eFuture\u003c/code\u003e from \u003ccode\u003eBlockingPortal.start_task_soon()\u003c/code\u003e would sometimes not cancel the async function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1011\"\u003e#1011\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the presence of the pytest plugin causing breakage with older versions of pytest (\u0026lt;= 6.1.2) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1028\"\u003e#1028\u003c/a\u003e; PR by \u003ca href=\"https://github.com/saper\"\u003e\u003ccode\u003e@​saper\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a rarely occurring \u003ccode\u003eRuntimeError: Set changed size during iteration\u003c/code\u003e while shutting down the process pool when using the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/bc021b634291223d6829c0a689152173443a8545\"\u003e\u003ccode\u003ebc021b6\u003c/code\u003e\u003c/a\u003e Fixed the download-artifact settings to retain the expected behavior\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/c6000aa2837f75733f3c09c454f5a31eb9f9f536\"\u003e\u003ccode\u003ec6000aa\u003c/code\u003e\u003c/a\u003e Corrected the format of the version in the changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9d1bfe0da4261bcef3c10cd31218237805a89937\"\u003e\u003ccode\u003e9d1bfe0\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/77f7ce25e12c9becf5081105a47b1914e50a3e0a\"\u003e\u003ccode\u003e77f7ce2\u003c/code\u003e\u003c/a\u003e Fixed RuntimeError while shutting down the asyncio process pool (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aecc666e6b3b40f977ee715d141bdd89711b45cb\"\u003e\u003ccode\u003eaecc666\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/e5569adf98394dfabebccf215a04d05d7819b506\"\u003e\u003ccode\u003ee5569ad\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/dde3ab8583cb194e663f6fb87703a4a79e2701eb\"\u003e\u003ccode\u003edde3ab8\u003c/code\u003e\u003c/a\u003e Moved a changelog entry to its correct position\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/250d4f183245bf7ee5ead0ff39d521cda2b8d617\"\u003e\u003ccode\u003e250d4f1\u003c/code\u003e\u003c/a\u003e Restore compatibility with pytest\u0026lt;=6.1.2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3708e227838e2f51464900cf806b25c30ca458a7\"\u003e\u003ccode\u003e3708e22\u003c/code\u003e\u003c/a\u003e Fixed a typo in the documentation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9adbe08c55e725b0388dcc4ab7556875da881a4c\"\u003e\u003ccode\u003e9adbe08\u003c/code\u003e\u003c/a\u003e Add new params to Path.glob \u0026amp; Path.rglob introduced since 3.12 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\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/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.8.1 to 3.11.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/asgiref/blob/main/CHANGELOG.txt\"\u003easgiref's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.0 (2025-11-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esync_to_async\u003c/code\u003e gains a \u003ccode\u003econtext\u003c/code\u003e parameter, similar to those for\n\u003ccode\u003easyncio.create_task\u003c/code\u003e, \u003ccode\u003eTaskGroup\u003c/code\u003e \u0026amp;co, that can be used on Python 3.11+ to\ncontrol the context used by the underlying task.\u003c/p\u003e\n\u003cp\u003eThe parent context is already propagated by default but the additional\ncontrol is useful if multiple \u003ccode\u003esync_to_async\u003c/code\u003e calls need to share the same\ncontext, e.g. when used with \u003ccode\u003easyncio.gather()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.10.0 (2025-10-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded AsyncSingleThreadContext context manager to ensure multiple AsyncToSync\ninvocations use the same thread. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.2 (2025-09-23)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes wsgi.errors file descriptor in WsgiToAsgi adapter.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b7b15b20ddb51d1d8b6978165c0986686cd08c1d\"\u003e\u003ccode\u003eb7b15b2\u003c/code\u003e\u003c/a\u003e Releasing 3.11.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/901ee4f96db156f0b462690dd7c9f5aa99bcce03\"\u003e\u003ccode\u003e901ee4f\u003c/code\u003e\u003c/a\u003e Added a custom context parameter for the sync_to_async (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2138f0317d79cedd065571447ae0a7571989550e\"\u003e\u003ccode\u003e2138f03\u003c/code\u003e\u003c/a\u003e Fixed typo in test file comment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f587b122af17bdba5749c30b96d2237bc1c2dfdf\"\u003e\u003ccode\u003ef587b12\u003c/code\u003e\u003c/a\u003e Releasing 3.10.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b08087c3b6df811a0524585c4d4dafdc6b12c222\"\u003e\u003ccode\u003eb08087c\u003c/code\u003e\u003c/a\u003e Added AsyncSingleThreadContext (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/3471a0c09bd043d61c299308c0c8519ab6c0f774\"\u003e\u003ccode\u003e3471a0c\u003c/code\u003e\u003c/a\u003e Releasing 3.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/4f892bd261cee9afe51d67333e9bc7cd98b39a35\"\u003e\u003ccode\u003e4f892bd\u003c/code\u003e\u003c/a\u003e Remove Python 3.8 from tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/83cd6f3c6f59a66999446c2893cdb3fcae3c03c5\"\u003e\u003ccode\u003e83cd6f3\u003c/code\u003e\u003c/a\u003e Run CI against Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/796b9f14fd92d3131c7c39fab308ddd986d271eb\"\u003e\u003ccode\u003e796b9f1\u003c/code\u003e\u003c/a\u003e Fix incorrect Trailer header (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/29b108b0a9a5eddae3e282ba33915412a855e529\"\u003e\u003ccode\u003e29b108b\u003c/code\u003e\u003c/a\u003e Fixed \u003ca href=\"https://redirect.github.com/django/asgiref/issues/529\"\u003e#529\u003c/a\u003e: wsgi.errors should be a StringIO (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.11.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.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 `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 `click` from 8.1.8 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\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\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/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\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 \u003ccode\u003eCliRunner\u003c/code\u003e. :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.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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.1.8...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu ...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/51","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/51","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/51/packages"}},{"old_version":"1.8.0","new_version":"1.9.0","update_type":"minor","path":null,"pr_created_at":"2025-12-22T16:17:20.000Z","version_change":"1.8.0 → 1.9.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":"1.8.0","new_version":"1.9.0","update_type":"minor","path":null,"pr_created_at":"2025-12-22T13:25:38.000Z","version_change":"1.8.0 → 1.9.0","issue":{"uuid":"3753802652","node_id":"PR_kwDOOaPssc66JH_l","number":75,"state":"closed","title":"Bump the python-packages group across 1 directory with 90 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-12T16:21:12.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-22T13:25:38.000Z","updated_at":"2026-01-12T16:21:14.000Z","time_to_close":1824934,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":90,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.0","repository_url":"https://github.com/django/asgiref"},{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"bcrypt","old_version":"4.3.0","new_version":"5.0.0","repository_url":"https://github.com/pyca/bcrypt"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.2","new_version":"6.2.4","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.4.26","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"chromadb","old_version":"1.0.8","new_version":"1.3.7","repository_url":"https://github.com/chroma-core/chroma"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastapi","old_version":"0.115.12","new_version":"0.127.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flatbuffers","old_version":"25.2.10","new_version":"25.12.19","repository_url":"https://github.com/google/flatbuffers"},{"name":"fsspec","old_version":"2025.3.2","new_version":"2025.12.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"google-auth","old_version":"2.40.0","new_version":"2.45.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"googleapis-common-protos","old_version":"1.70.0","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"htmldate","old_version":"1.9.3","new_version":"1.9.4","repository_url":"https://github.com/adbar/htmldate"},{"name":"httptools","old_version":"0.6.4","new_version":"0.7.1","repository_url":"https://github.com/MagicStack/httptools"},{"name":"huggingface-hub","old_version":"0.30.2","new_version":"1.2.3","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.7.0","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jiter","old_version":"0.9.0","new_version":"0.12.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.0","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"kubernetes","old_version":"32.0.1","new_version":"34.1.0","repository_url":"https://github.com/kubernetes-client/python"},{"name":"lxml","old_version":"5.4.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"lxml-html-clean","old_version":"0.4.2","new_version":"0.4.3","repository_url":"https://github.com/fedora-python/lxml_html_clean"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"networkx","old_version":"3.4.2","new_version":"3.6.1","repository_url":"https://github.com/networkx/networkx"},{"name":"numpy","old_version":"2.0.2","new_version":"2.4.0","repository_url":"https://github.com/numpy/numpy"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"onnxruntime","old_version":"1.21.0","new_version":"1.23.2","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"openai","old_version":"1.77.0","new_version":"2.14.0","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.32.1","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.32.1","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.32.1","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.53b1","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.53b1","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.53b1","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.32.1","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.32.1","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.53b1","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.53b1","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.10.18","new_version":"3.11.5","repository_url":"https://github.com/ijl/orjson"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"11.2.1","new_version":"12.0.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"posthog","old_version":"4.0.1","new_version":"7.4.2","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"6.30.2","new_version":"6.33.2","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic","old_version":"2.11.4","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.34.1","new_version":"2.41.5","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymupdf","old_version":"1.25.5","new_version":"1.26.7","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"regex","old_version":"2024.11.6","new_version":"2025.11.3","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.2.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.24.0","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.7.0","repository_url":"https://github.com/huggingface/safetensors"},{"name":"scikit-learn","old_version":"1.6.1","new_version":"1.8.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.15.2","new_version":"1.16.3","repository_url":"https://github.com/scipy/scipy"},{"name":"sentence-transformers","old_version":"4.1.0","new_version":"5.2.0","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.1","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"0.46.2","new_version":"0.50.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.12.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tld","old_version":"0.13","new_version":"0.13.1","repository_url":"https://github.com/barseghyanartur/tld"},{"name":"tokenizers","old_version":"0.21.1","new_version":"0.22.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.7.0","new_version":"2.9.1","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.51.3","new_version":"4.57.3","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.15.3","new_version":"0.20.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.0","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"tzdata","old_version":"2025.2","new_version":"2025.3","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.40.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"uvloop","old_version":"0.21.0","new_version":"0.22.1","repository_url":"https://github.com/MagicStack/uvloop"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 90 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.0` |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [bcrypt](https://github.com/pyca/bcrypt) | `4.3.0` | `5.0.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.2` | `6.2.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.8` | `1.3.7` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.12` | `0.127.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.1` |\n| [flatbuffers](https://github.com/google/flatbuffers) | `25.2.10` | `25.12.19` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.2` | `2025.12.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.0` | `2.45.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.70.0` | `1.72.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.76.0` |\n| [htmldate](https://github.com/adbar/htmldate) | `1.9.3` | `1.9.4` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.6.4` | `0.7.1` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `0.30.2` | `1.2.3` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.7.0` | `8.7.1` |\n| [jiter](https://github.com/pydantic/jiter) | `0.9.0` | `0.12.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.0` | `1.5.3` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `32.0.1` | `34.1.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.4.0` | `6.0.2` |\n| [lxml-html-clean](https://github.com/fedora-python/lxml_html_clean) | `0.4.2` | `0.4.3` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [networkx](https://github.com/networkx/networkx) | `3.4.2` | `3.6.1` |\n| [numpy](https://github.com/numpy/numpy) | `2.0.2` | `2.4.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.21.0` | `1.23.2` |\n| [openai](https://github.com/openai/openai-python) | `1.77.0` | `2.14.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.60b1` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.60b1` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.53b1` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.60b1` |\n| [orjson](https://github.com/ijl/orjson) | `3.10.18` | `3.11.5` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.0.0` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.0.1` | `7.4.2` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.30.2` | `6.33.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.12.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.34.1` | `2.41.5` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.5` | `1.26.7` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.2.1` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.11.6` | `2025.11.3` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.2.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.24.0` | `0.30.0` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.7.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.6.1` | `1.8.0` |\n| [scipy](https://github.com/scipy/scipy) | `1.15.2` | `1.16.3` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `4.1.0` | `5.2.0` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.1` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.50.0` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.12.0` |\n| [tld](https://github.com/barseghyanartur/tld) | `0.13` | `0.13.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.1` | `0.22.1` |\n| [torch](https://github.com/pytorch/pytorch) | `2.7.0` | `2.9.1` |\n| [transformers](https://github.com/huggingface/transformers) | `4.51.3` | `4.57.3` |\n| [typer](https://github.com/fastapi/typer) | `0.15.3` | `0.20.1` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.0` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.2` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.40.0` |\n| [uvloop](https://github.com/MagicStack/uvloop) | `0.21.0` | `0.22.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.12.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.12.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for asyncio's \u003ca href=\"https://docs.python.org/3/library/asyncio-graph.html\"\u003etask call graphs\u003c/a\u003e on Python 3.14 and later when using AnyIO's task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1025\"\u003e#1025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded an asynchronous implementation of the \u003ccode\u003efunctools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1001\"\u003e#1001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ewinloop\u003c/a\u003e implementation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/960\"\u003e#960\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for use as a context manager to \u003ccode\u003eanyio.lowlevel.RunVar\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1003\"\u003e#1003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e__all__\u003c/code\u003e declarations to public submodules (\u003ccode\u003eanyio.lowlevel\u003c/code\u003e etc.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1009\"\u003e#1009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to set the token count of a \u003ccode\u003eCapacityLimiter\u003c/code\u003e to zero (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1019\"\u003e#1019\u003c/a\u003e; requires Python 3.10 or later when using Trio)\u003c/li\u003e\n\u003cli\u003eAdded parameters \u003ccode\u003ecase_sensitive\u003c/code\u003e and \u003ccode\u003erecurse_symlinks\u003c/code\u003e along with support for path-like objects to \u003ccode\u003eanyio.Path.glob()\u003c/code\u003e and \u003ccode\u003eanyio.Path.rglob()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1033\"\u003e#1033\u003c/a\u003e; PR by \u003ca href=\"https://github.com/northisup\"\u003e\u003ccode\u003e@​northisup\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped \u003ccode\u003esniffio\u003c/code\u003e as a direct dependency and added the \u003ccode\u003eget_available_backends()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1021\"\u003e#1021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not raising \u003ccode\u003eClosedResourceError\u003c/code\u003e and \u003ccode\u003eBrokenResourceError\u003c/code\u003e on asyncio. Previously, a non-AnyIO exception was raised in such cases (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not checkpointing before writing data on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1002\"\u003e#1002\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a race condition where cancelling a \u003ccode\u003eFuture\u003c/code\u003e from \u003ccode\u003eBlockingPortal.start_task_soon()\u003c/code\u003e would sometimes not cancel the async function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1011\"\u003e#1011\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the presence of the pytest plugin causing breakage with older versions of pytest (\u0026lt;= 6.1.2) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1028\"\u003e#1028\u003c/a\u003e; PR by \u003ca href=\"https://github.com/saper\"\u003e\u003ccode\u003e@​saper\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a rarely occurring \u003ccode\u003eRuntimeError: Set changed size during iteration\u003c/code\u003e while shutting down the process pool when using the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/bc021b634291223d6829c0a689152173443a8545\"\u003e\u003ccode\u003ebc021b6\u003c/code\u003e\u003c/a\u003e Fixed the download-artifact settings to retain the expected behavior\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/c6000aa2837f75733f3c09c454f5a31eb9f9f536\"\u003e\u003ccode\u003ec6000aa\u003c/code\u003e\u003c/a\u003e Corrected the format of the version in the changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9d1bfe0da4261bcef3c10cd31218237805a89937\"\u003e\u003ccode\u003e9d1bfe0\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/77f7ce25e12c9becf5081105a47b1914e50a3e0a\"\u003e\u003ccode\u003e77f7ce2\u003c/code\u003e\u003c/a\u003e Fixed RuntimeError while shutting down the asyncio process pool (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aecc666e6b3b40f977ee715d141bdd89711b45cb\"\u003e\u003ccode\u003eaecc666\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/e5569adf98394dfabebccf215a04d05d7819b506\"\u003e\u003ccode\u003ee5569ad\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/dde3ab8583cb194e663f6fb87703a4a79e2701eb\"\u003e\u003ccode\u003edde3ab8\u003c/code\u003e\u003c/a\u003e Moved a changelog entry to its correct position\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/250d4f183245bf7ee5ead0ff39d521cda2b8d617\"\u003e\u003ccode\u003e250d4f1\u003c/code\u003e\u003c/a\u003e Restore compatibility with pytest\u0026lt;=6.1.2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3708e227838e2f51464900cf806b25c30ca458a7\"\u003e\u003ccode\u003e3708e22\u003c/code\u003e\u003c/a\u003e Fixed a typo in the documentation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9adbe08c55e725b0388dcc4ab7556875da881a4c\"\u003e\u003ccode\u003e9adbe08\u003c/code\u003e\u003c/a\u003e Add new params to Path.glob \u0026amp; Path.rglob introduced since 3.12 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.8.1 to 3.11.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/asgiref/blob/main/CHANGELOG.txt\"\u003easgiref's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.0 (2025-11-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esync_to_async\u003c/code\u003e gains a \u003ccode\u003econtext\u003c/code\u003e parameter, similar to those for\n\u003ccode\u003easyncio.create_task\u003c/code\u003e, \u003ccode\u003eTaskGroup\u003c/code\u003e \u0026amp;co, that can be used on Python 3.11+ to\ncontrol the context used by the underlying task.\u003c/p\u003e\n\u003cp\u003eThe parent context is already propagated by default but the additional\ncontrol is useful if multiple \u003ccode\u003esync_to_async\u003c/code\u003e calls need to share the same\ncontext, e.g. when used with \u003ccode\u003easyncio.gather()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.10.0 (2025-10-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded AsyncSingleThreadContext context manager to ensure multiple AsyncToSync\ninvocations use the same thread. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.2 (2025-09-23)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes wsgi.errors file descriptor in WsgiToAsgi adapter.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b7b15b20ddb51d1d8b6978165c0986686cd08c1d\"\u003e\u003ccode\u003eb7b15b2\u003c/code\u003e\u003c/a\u003e Releasing 3.11.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/901ee4f96db156f0b462690dd7c9f5aa99bcce03\"\u003e\u003ccode\u003e901ee4f\u003c/code\u003e\u003c/a\u003e Added a custom context parameter for the sync_to_async (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2138f0317d79cedd065571447ae0a7571989550e\"\u003e\u003ccode\u003e2138f03\u003c/code\u003e\u003c/a\u003e Fixed typo in test file comment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f587b122af17bdba5749c30b96d2237bc1c2dfdf\"\u003e\u003ccode\u003ef587b12\u003c/code\u003e\u003c/a\u003e Releasing 3.10.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b08087c3b6df811a0524585c4d4dafdc6b12c222\"\u003e\u003ccode\u003eb08087c\u003c/code\u003e\u003c/a\u003e Added AsyncSingleThreadContext (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/3471a0c09bd043d61c299308c0c8519ab6c0f774\"\u003e\u003ccode\u003e3471a0c\u003c/code\u003e\u003c/a\u003e Releasing 3.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/4f892bd261cee9afe51d67333e9bc7cd98b39a35\"\u003e\u003ccode\u003e4f892bd\u003c/code\u003e\u003c/a\u003e Remove Python 3.8 from tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/83cd6f3c6f59a66999446c2893cdb3fcae3c03c5\"\u003e\u003ccode\u003e83cd6f3\u003c/code\u003e\u003c/a\u003e Run CI against Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/796b9f14fd92d3131c7c39fab308ddd986d271eb\"\u003e\u003ccode\u003e796b9f1\u003c/code\u003e\u003c/a\u003e Fix incorrect Trailer header (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/29b108b0a9a5eddae3e282ba33915412a855e529\"\u003e\u003ccode\u003e29b108b\u003c/code\u003e\u003c/a\u003e Fixed \u003ca href=\"https://redirect.github.com/django/asgiref/issues/529\"\u003e#529\u003c/a\u003e: wsgi.errors should be a StringIO (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.11.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 `bcrypt` from 4.3.0 to 5.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/bcrypt/blob/main/CHANGELOG.rst\"\u003ebcrypt's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBumped MSRV to 1.74.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.14 and free-threaded Python 3.14.\u003c/li\u003e\n\u003cli\u003eAdded support for Windows on ARM.\u003c/li\u003e\n\u003cli\u003ePassing \u003ccode\u003ehashpw\u003c/code\u003e a password longer than 72 bytes now raises a\n\u003ccode\u003eValueError\u003c/code\u003e. Previously the password was silently truncated, following the\nbehavior of the original OpenBSD \u003ccode\u003ebcrypt\u003c/code\u003e implementation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/5060bce7e6c27f55e89d5b0d22b7ae0437a362f7\"\u003e\u003ccode\u003e5060bce\u003c/code\u003e\u003c/a\u003e 5.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e43f568265df7e1aabbaddccc336dbf3ea675df8\"\u003e\u003ccode\u003ee43f568\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.4 to 4.3.0 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1077\"\u003e#1077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/fc9f680a96a0d8e9df4c5a1a4d991fd961a90adb\"\u003e\u003ccode\u003efc9f680\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.175 to 0.2.176 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1075\"\u003e#1075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/633f46fbb33d8abfe5b9cb0c12eed79878fbff06\"\u003e\u003ccode\u003e633f46f\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1073\"\u003e#1073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/a2fefbbcff8d46cfd00efa8d2c13956b388d6bec\"\u003e\u003ccode\u003ea2fefbb\u003c/code\u003e\u003c/a\u003e Remove pypy310 builds (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/f60707e18f3f9728f2c6f4ce97fb8fc90721c7d3\"\u003e\u003ccode\u003ef60707e\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.5+wasi-0.2.4 to 0.14.7+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1071\"\u003e#1071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/c790eed8fa205403e1ea0587cf9178e866c940f3\"\u003e\u003ccode\u003ec790eed\u003c/code\u003e\u003c/a\u003e Bump unicode-ident from 1.0.18 to 1.0.19 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1070\"\u003e#1070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/122cbdc6895fd70c044a2f4ad7845c2a56b93096\"\u003e\u003ccode\u003e122cbdc\u003c/code\u003e\u003c/a\u003e Bump target-lexicon from 0.13.2 to 0.13.3 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1069\"\u003e#1069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/2bd208d6c5cadba2f983280ec21cc8cf977904d0\"\u003e\u003ccode\u003e2bd208d\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.4+wasi-0.2.4 to 0.14.5+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1068\"\u003e#1068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e1aa9e883090e0267bd7b38964fe852f70a99b88\"\u003e\u003ccode\u003ee1aa9e8\u003c/code\u003e\u003c/a\u003e remove poinless cargo cache paths from CI (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1067\"\u003e#1067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/bcrypt/compare/4.3.0...5.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beautifulsoup4` from 4.13.4 to 4.14.3\n\nUpdates `build` from 1.2.2.post1 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/pypa/build/releases\"\u003ebuild'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\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e, fixes issue \u003ca href=\"https://redirect.github.com/pypa/build/issues/900\"\u003e#900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/891\"\u003e#891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+ (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/861\"\u003e#861\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/738\"\u003e#738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/824\"\u003e#824\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/918\"\u003e#918\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/870\"\u003e#870\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/915\"\u003e#915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/862\"\u003e#862\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/899\"\u003e#899\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/896\"\u003e#896\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/842\"\u003e#842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/816\"\u003e#816\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/917\"\u003e#917\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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.3.0 (2025-08-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e\n(PR :pr:\u003ccode\u003e916\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8\n(PR :pr:\u003ccode\u003e891\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+\n(PR :pr:\u003ccode\u003e895\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed\n(PR :pr:\u003ccode\u003e898\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip\n(PR :pr:\u003ccode\u003e861\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn\n(PR :pr:\u003ccode\u003e892\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster\n(PR :pr:\u003ccode\u003e871\u003c/code\u003e, :pr:\u003ccode\u003e872\u003c/code\u003e, :pr:\u003ccode\u003e738\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv\n(PR :pr:\u003ccode\u003e911\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests\n(PR :pr:\u003ccode\u003e824\u003c/code\u003e, :pr:\u003ccode\u003e918\u003c/code\u003e, :pr:\u003ccode\u003e870\u003c/code\u003e, :pr:\u003ccode\u003e915\u003c/code\u003e, :pr:\u003ccode\u003e862\u003c/code\u003e, :pr:\u003ccode\u003e863\u003c/code\u003e, :pr:\u003ccode\u003e899\u003c/code\u003e, :pr:\u003ccode\u003e896\u003c/code\u003e, :pr:\u003ccode\u003e854\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata\n(PR :pr:\u003ccode\u003e914\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development\n(PR :pr:\u003ccode\u003e880\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs\n(PR :pr:\u003ccode\u003e842\u003c/code\u003e, :pr:\u003ccode\u003e816\u003c/code\u003e, :pr:\u003ccode\u003e917\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.2 (2024-09-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd editable to \u003ccode\u003ebuilder.get_requries_for_build\u003c/code\u003e's static types\n(PR :pr:\u003ccode\u003e764\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e763\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eInclude artifact attestations in our release\n(PR :pr:\u003ccode\u003e782\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix typing compatibility with typed \u003ccode\u003epyproject-hooks\u003c/code\u003e\n(PR :pr:\u003ccode\u003e788\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMark more tests with \u003ccode\u003enetwork\u003c/code\u003e\n(PR :pr:\u003ccode\u003e808\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more intersphinx links to docs\n(PR :pr:\u003ccode\u003e804\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003euv\u003c/code\u003e optional for tests\n(PR :pr:\u003ccode\u003e807\u003c/code\u003e and :pr:\u003ccode\u003e813\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.1 (2024-03-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid error when terminal width is undetectable on Python \u0026lt; 3.11\n(PR :pr:\u003ccode\u003e761\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/60e8752f69178d2b2c3563e9c8fa17aa6e11b12c\"\u003e\u003ccode\u003e60e8752\u003c/code\u003e\u003c/a\u003e chore: bump to 1.3.0 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/919\"\u003e#919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/807cfba618bc4f7b13e938ffa395fffd82494383\"\u003e\u003ccode\u003e807cfba\u003c/code\u003e\u003c/a\u003e feat: add --config-json (\u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bf54ad04ffe30e7f7847ea0bcbc081b550830950\"\u003e\u003ccode\u003ebf54ad0\u003c/code\u003e\u003c/a\u003e tests: fix issues with ignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/53852df8d84d1d17afaa851d4e1cc3754676bb29\"\u003e\u003ccode\u003e53852df\u003c/code\u003e\u003c/a\u003e docs: uv example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b983371befe0547b312aba36083b859d923d9bfc\"\u003e\u003ccode\u003eb983371\u003c/code\u003e\u003c/a\u003e tests: optional virtualenv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6cd157ad0b614a76a13374032a4f56b65048c0be\"\u003e\u003ccode\u003e6cd157a\u003c/code\u003e\u003c/a\u003e Adopt PEP 639 \u0026quot;license\u0026quot; field (\u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bdaea367438b8e5ed3c26a7497eafc007084fbec\"\u003e\u003ccode\u003ebdaea36\u003c/code\u003e\u003c/a\u003e tests: fixes for errors in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/14d6508679e2ddb4a511b4b41e972cb374e9dadb\"\u003e\u003ccode\u003e14d6508\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/59ac60e78e0dc5164355bd29eb99fb1cb2d7a59c\"\u003e\u003ccode\u003e59ac60e\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/48ebd63cd7049dff737093c462970262ae1ceed0\"\u003e\u003ccode\u003e48ebd63\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 5.5.2 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\u003ch1\u003ev6.2.1 (2025-10-12)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove documentation.\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.0 (2025-08-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove general \u003ccode\u003eRRCache\u003c/code\u003e performance by storing cache keys in an\nadditional sequence container.  Note that this will increase memory\nconsumption.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more unit tests.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.1.0 (2025-06-16)\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/v5.5.2...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.4.26 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.04.26...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.2 to 3.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\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\u003c/blockquote\u003e\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.2...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chromadb` from 1.0.8 to 1.3.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecli-1.2.4\u003c/h2\u003e\n\u003cp\u003eCLI release.\u003c/p\u003e\n\u003ch2\u003e1.3.6\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.3.6\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.3.6\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-12-10T05:26\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.3.6.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.3.6\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.3.6\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ENH] Use GCS with aws-sdk-go-v2 by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5878\"\u003echroma-core/chroma#5878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Refactor compactor into three chained orchestrators by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5831\"\u003echroma-core/chroma#5831\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Disable S3heap service and remove nonce-related logic by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5866\"\u003echroma-core/chroma#5866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Remove next_run from attached_functions by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5871\"\u003echroma-core/chroma#5871\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] - Update the README with correct logo by \u003ca href=\"https://github.com/tjkrusinskichroma\"\u003e\u003ccode\u003e@​tjkrusinskichroma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5888\"\u003echroma-core/chroma#5888\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Register package name for chroma-bm25 in js client, fix default-embed warning in getOrCreate by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5889\"\u003echroma-core/chroma#5889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add blank task support for ChromaCloudQwenEmbeddingFunction by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5874\"\u003echroma-core/chroma#5874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] update quota info for concurrent reads and writes per collection by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5875\"\u003echroma-core/chroma#5875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update error message returning to give back messages from server in js client by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5890\"\u003echroma-core/chroma#5890\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Make admission controlled client generic by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5883\"\u003echroma-core/chroma#5883\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Upgrade to foyer 0.20.1 to support multi-disk by \u003ca href=\"https://github.com/HammadB\"\u003e\u003ccode\u003e@​HammadB\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5887\"\u003echroma-core/chroma#5887\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Agentic Search Guide by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5881\"\u003echroma-core/chroma#5881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Modified AttachFunction to do 2PC on a new is_ready column by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5872\"\u003echroma-core/chroma#5872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Make wal3::Error::Internal log where it originates. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5891\"\u003echroma-core/chroma#5891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Let Chroma Cloud EFs get API key from client by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5892\"\u003echroma-core/chroma#5892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add getCollectionByCrn api support in js client by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5894\"\u003echroma-core/chroma#5894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] JS 3.1.6 by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5895\"\u003echroma-core/chroma#5895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Execute task with no backfill or incremental by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5867\"\u003echroma-core/chroma#5867\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Try shoe-horning sparse vector tokens into the metadata value. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5767\"\u003echroma-core/chroma#5767\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Make all functions incremental by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5893\"\u003echroma-core/chroma#5893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Take a suggestion from propel by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5901\"\u003echroma-core/chroma#5901\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Put both token id and token str in the statistics by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5777\"\u003echroma-core/chroma#5777\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Introduce backfill capabilities in compactor by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5896\"\u003echroma-core/chroma#5896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Persist a backfill record on log to trigger backfill by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5897\"\u003echroma-core/chroma#5897\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Refactor AttachedFunctionOrchestrator to return a FunctionContext instead of its individual fields by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5902\"\u003echroma-core/chroma#5902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add HTTP endpoint for get_attached_function by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5898\"\u003echroma-core/chroma#5898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add Python wrapper API for statistics function by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5899\"\u003echroma-core/chroma#5899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Add test_statistics_wrapper to CI by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5903\"\u003echroma-core/chroma#5903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] - Adds YouTube video to agentic search guide page by \u003ca href=\"https://github.com/tjkrusinskichroma\"\u003e\u003ccode\u003e@​tjkrusinskichroma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5905\"\u003echroma-core/chroma#5905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Sparse vector labels in python client by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5904\"\u003echroma-core/chroma#5904\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Fix test flake in test_task_api.py by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5907\"\u003echroma-core/chroma#5907\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Upgrade foyer to “7beb132de801e410bc751ecd0318c2a6d2ecd0d3” by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5912\"\u003echroma-core/chroma#5912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add k8s multidisk support by \u003ca href=\"https://github.com/HammadB\"\u003e\u003ccode\u003e@​HammadB\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5913\"\u003echroma-core/chroma#5913\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Make sure an input collection soft delete cascades to attached functions by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5908\"\u003echroma-core/chroma#5908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Fix authorization calls for functions API by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5915\"\u003echroma-core/chroma#5915\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Have stats function paginate through output collection by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5906\"\u003echroma-core/chroma#5906\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  wal3 Sometimes returns an \u0026quot;Internal\u0026quot; when it should return \u0026quot;LogContentionFailure\u0026quot; by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5916\"\u003echroma-core/chroma#5916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Document why it is a LogContentionFailure. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5920\"\u003echroma-core/chroma#5920\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/chroma-core/chroma/commit/a4e05b9df2342383ac395be8313b3e509ce725ea\"\u003e\u003ccode\u003ea4e05b9\u003c/code\u003e\u003c/a\u003e [RELEASE] CLI 1.2.4, Python 1.3.7, JS 3.1.8 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6032\"\u003e#6032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/b8a1b97380887580299cd099f9e933632bc204c3\"\u003e\u003ccode\u003eb8a1b97\u003c/code\u003e\u003c/a\u003e [ENH] Holiday edition CLI (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6028\"\u003e#6028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/d7d33fa73a587a81adfa43bf0c3754ba8ef6d933\"\u003e\u003ccode\u003ed7d33fa\u003c/code\u003e\u003c/a\u003e [ENH]  Add spanner emulator to the tilt config. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5987\"\u003e#5987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/f45ba4e73220604a226fc9dd1b5dfd8129dc34de\"\u003e\u003ccode\u003ef45ba4e\u003c/code\u003e\u003c/a\u003e [RELEASE] Rust client 0.9.0 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6025\"\u003e#6025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/6405042370d0c8984732174b8647a688bc667386\"\u003e\u003ccode\u003e6405042\u003c/code\u003e\u003c/a\u003e [ENH] Make RFE tiltfile config + values overridable (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6026\"\u003e#6026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/8c3eaed952ff91a48fd73ae9073ad4622997e9fc\"\u003e\u003ccode\u003e8c3eaed\u003c/code\u003e\u003c/a\u003e [ENH] Make it possible to deploy multiple chromas in Tiltfile (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5992\"\u003e#5992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/4295491011a051c0289d6bbbfdc546818c6b1bb9\"\u003e\u003ccode\u003e4295491\u003c/code\u003e\u003c/a\u003e [BUG]: Fix deadlock in orchestrator test (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6020\"\u003e#6020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/5df18a8297245c2242db8e710384be9532c4a762\"\u003e\u003ccode\u003e5df18a8\u003c/code\u003e\u003c/a\u003e [ENH] Reduce max backoff retry interval in wal3 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6019\"\u003e#6019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/09545d8277eddd6a6959ec7525b3e6f7c15b4c7c\"\u003e\u003ccode\u003e09545d8\u003c/code\u003e\u003c/a\u003e [ENH] Update error message tag in wal3 writer (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6017\"\u003e#6017\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/df6602421d06235182ab9a338c08b1f59711b3a3\"\u003e\u003ccode\u003edf66024\u003c/code\u003e\u003c/a\u003e [ENH] - Updates styling for code examples in light mode (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6002\"\u003e#6002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.8...1.3.7\"\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.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\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 regr...\n\n_Description has been truncated_","html_url":"https://github.com/Alvarz/google-gemini-rag/pull/75","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alvarz%2Fgoogle-gemini-rag/issues/75","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/75/packages"}}]}